码迷,mamicode.com
首页 > 其他好文 > 详细

关于为函数形参赋值和搜索变量标识符的云云

时间:2018-04-06 17:36:06      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:div   声明   src   class   log   赋值   int   默认   function   

为形参提供默认值是以前的一种流行方法:

function foo(a){
    a=a||1;
    console.log(a);
}

foo();     // 1
foo(12);  // 12

你看,如果函数调用时不提供实参,形参a会被赋1。另:最好不要修改形参,参见竟然修改形参有这么可怕的后果

形参本身是局部变量,只能在函数内访问:

function foo(a){
    console.log(a);
}

foo(12);   // 12

console.log(a);  // Uncaught ReferenceError: a is not defined

比如,你可以这样:

function foo(){
    a=‘lala‘;
}

foo();

console.log(a);  // lala

引擎在foo函数的作用域和全局作用域找不到名为a的变量,在非严格模式下就会在全局作用域创建一个名为a的全局变量,此时如果为函数添加名为a的形参就可以

阻止这种事情发生:

function foo(a){
    a=‘lala‘;
}

foo();

console.log(a);  // Uncaught ReferenceError: a is not defined

因为引擎已经在函数的作用域内找到了名为a的变量,所以不会在全局作用域创建名为a的全局变量,此时,如果再在函数内声明名为a的变量就已经是重复声明了:

function foo(a){
    var a=‘lala‘;
    console.log(a);
}

foo();  // lala

此时JShint等代码检查工具就会警告:

技术分享图片

虽然JS的重复声明会被引擎忽略,但不建议这么做。

最后,我真想吐槽博客园的光标,特么的怎么总是莫名其妙跳到别处!害得总是修改原来写好的代码!

以上。

关于为函数形参赋值和搜索变量标识符的云云

标签:div   声明   src   class   log   赋值   int   默认   function   

原文地址:https://www.cnblogs.com/linweinb/p/8728034.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!