let a=b=1与let a=1,b=1的差别

2,002 阅读1分钟

一,dom01

function fn() {
    let a = 1, b = 1;
    return b;
}
fn();
typeof a;
typeof b;

1.在fn()作用域中用let声明了变量a并赋值

2.中间用逗号隔开表示变量b也是用let声明并赋值;

3.这时a,b都是局部变量,当在函数外面访问判断a,b的数据类型肯定就是undefined了!

// 答案
console.log(typeof a);	// undefined
console.log(typeof b);	// undefined

二,dom02

function fn() {
    let a = b = 1;
    return b;
}
fn();
typeof a;
typeof b;

1.在fn()作用域中用let声明了变量a,这时的a是局部变量;

2.紧接着后面的b就是全局变量了,因为在fn()中或者全局作用域中都没有声明变量b,let声明的只是变量a;

3.此时JavaScript将表达式 b = 1解释为window.b = 1;

4.故a是一个局部变量在函数外部不可用,而b是一个全局变量!

// 答案
console.log(typeof a);	// undefined
console.log(typeof b);	// number