JavaScript笔记

JavaScript函数注意事项1

  • JS函数可以传入任意个参数而不影响调用,传入参数少也没有问题,一般会返回NaN。
  • 在进行传入参数的判断的时候可以借助arguments来进行判断。
    例如:
function foo(x) {
    alert(x); // 10
    for (var i=0; i<arguments.length; i++) {
        alert(arguments[i]); // 10, 20, 30
    }
}
foo(10, 20, 30);

在实际应用中arguments经常用于判断参数的个数。

  • rest参数可以取得和arguments相类似的效果。
function foo(a, b, ...rest) {
    console.log('a = ' + a);
    console.log('b = ' + b);
    console.log(rest);
}

rest参数只能写在最后,前面用…标识,从运行结果可知,传入的参数先绑定a、b,多余的参数以数组形式交给变量rest,所以,不再需要arguments我们就获取了全部参数。

  • 全局作用域:不在任何函数内定义的变量具有全局作用域,除了自身的变量访问也可以用window.*形式访问,JS默认的全局作用域对象为window。
 'use strict';

function foo() {
    alert('foo');
}

foo(); // 直接调用foo()
window.foo(); // 通过window.foo()调用

为了避免这种情况出现,一般都会利用名字空间

var MySpace = {};

//其他变量
MySpace.age = function() {
    return 18;
}
  • 和C++不同的是在for循环等语句块中是无法定义具有局部作用域的变量。
 'use strict';

function foo() {
    for (var i=0; i<100; i++) {
        //
    }
    i += 100; // 仍然可以引用变量i
}

为了解决块级作用域,ES6引入了新的关键字let,用let替代var可以申明一个块级作用域的变量:

'use strict';

function foo() {
    var sum = 0;
    for (let i=0; i<100; i++) {
        sum += i;
    }
    i += 1; // SyntaxError
}

你可能感兴趣的:(JavaScript)