一、变量提升
console.log(a); //undefined var a = 0;
以上代码段并不会报错,js中存在变量提升,会将变量的声明提升至文件的顶部,形式如下。
var a; console(a); a = l;
二、label
var a = 0; loop: for(let i=0;i<10;i++){ for(let j=0;j<10;j++){ a++; break loop; } } console.log(a); //1
以上loop为一个label,label多用来break或continue跳出代码块。
三、null与undefined
null与undefined在if语句中被转换为false。
null是一个表示为“空”的对象,它的出生较早(1995),根据C语言的传统,可以自动转换为0.
Number(null); //0 null+5; //5
undefined表明此处无定义的原始值
Number(undefined); //NaN undefined+6; //NaN
如果JavaScript预期某个位置应该是布尔值,以下值会转换为false: undefined, null, false, 0, NaN, ""或''(空字符串);而其他值都是为true.