个人记忆: html中属性规范是用双引号,js中字符串规定是用单引号
3.不存在变量提升
在javascript中,变量提升是指在变量的作用域内,不管变量在何处声明,都会被提升到作用域的顶部,但是变量初始化的顺序不变。换句话说就是代码在执行之前会先收集变量,var以及函数会提前声明;
console.log(song);
var song='baidu';
对于上面的代码这个例子,第一行代码,你可能认为报错, 因为在输出a之前,没有定义a变量, 但是正确的结果是undefined。根据上面js执行代码的解释,结合实际的代码,当我们碰到 var song='baidu' 定义一个变量的时候, 其实js把这句话看成是2个阶段的事, var a 发生在编译阶段, song='baidu'发生在执行阶段. 然后 var song会被提升到当前作用域的最前面, song='baidu'留在原地等待执行阶段.
let song='baidu';
4.不影响作用域链