其他:
Hoisting:
Hoisting 是 JavaScript 将所有声明提升到当前作用域顶部的默认行为(提升到当前脚本或当前函数的顶部)。
1.会将函数提升到最上面,
2.然后再到变量的声明(var声明的才会被提升,let声明的不会提升),
3.最后再到正常的代码执行。
this关键字:
this指的是它的所属对象,它拥有不同的值,具体取决于它的使用位置:
在方法中,this 指的是所有者对象。
单独的情况下,this 指的是全局对象。
在函数中,this 指的是全局对象。
在函数中,严格模式下,this 是 undefined。
在事件中,this 指的是接收事件的元素。
作用域:
全局作用域:
全局(在函数之外)声明的变量拥有全局作用域
使用var和let在 块外 声明变量都拥有全局作用域(区别在于var定义的变量属于window对象,let不属于window对象)
函数作用域:
局部(函数内)声明的变量拥有函数作用域。
局部变量只能在他们被声明的函数内访问
块作用域:
使用let关键字声明拥有块作用域的变量
var和let和const的区别:
var:
声明的变量拥有 函数作用域 或者 全局作用域 (会提升)
let:
声明的变量拥有 块作用域 或者 全局作用域 (不会提升)
在全局下用let不属于window对象
const:
声明的变量拥有 块作用域 或者 全局作用域 (不会提升)
声明时必须赋值,不可修改,
(但并非真正的常量)是值的常量引用,因此常量对象的属性是可以修改的。