变量声明前置与函数声明前置
变量声明前置
变量声明出现在代码中的任何位置都会在该代码执行前处理,这意味着变量可以在声明之前使用,这个行为叫"hoisting",即把在指定作用域内声明的变量提升到函数或全局代码的顶部。
声明变量的作用域限制在其声明位置的上下文中,而未声明变量总是全局的,所以总在作用域最开始声明变量可以使变量的作用域变得清晰。
示例:
console.log(a);
// undefined
var a= 1;
console.log(b);
//Referencerror: b is not deined
- 由上到下执行代码之前,解析器会先找到var关键字,找到了var a ,就提升var a 并将a初始化为undefined
- 再由上往下执行,读到console.log(a),控制台打印出来的就是undefined。
- 接着给变量a赋值,如果这个时候在后面加console.log(a),那么控制台打印出来的就是1.
- console.log(b),在前面没有对b进行声明,所以报错。
变量会在代码执行之前就创建,初始化并赋值undefined
变量的声明会提升,变量的赋值不会提升
使用function关键字可以声明一个函数,他的特征是函数声明提升,执行代码之前会读取函数声明,即声明不必放在调用的前面,可以放在作用域的任何位置。
a();
function a(){
console.log(''hello'')
}
以上代码没有return,返回值undefined
a();
function a(){
return(''hello'')
}
【变量声明前置与函数声明前置】以上代码返回值''hello''
JS引擎的过程
- 扎到所有用function声明的函数,在环境中创建这些函数
- 将这些函数初始化并赋值为function(){}
- 开始执行代码a()
函数提升的优先级高于变量提升的优先级
推荐阅读
- Shell-Bash变量与运算符
- (二)ES6第一节变量(let|(二)ES6第一节变量(let,const)
- iOS中的Block
- 概率论/统计学|随机变量 的 分布函数 与 概率密度函数 的区别
- 分部类和分部方法
- 股票最大利润|股票最大利润 II
- Python|Win10下 Python开发环境搭建(PyCharm + Anaconda) && 环境变量配置 && 常用工具安装配置
- spring事务管理_01:事务管理框架+声明式事务
- [2018-02-22]|[2018-02-22] Git之远程仓库
- linux环境变量相关操作