javascript 变量提升

来源:互联网 发布:linux查看运行的服务 编辑:程序博客网 时间:2024/06/16 17:19

JavaScript的函数定义有个特点,它会先扫描整个函数体的语句,把所有申明的变量“提升”到函数顶部:

'use strict';function foo() {    var x = 'Hello, ' + y;    alert(x);    var y = 'Bob';}foo();

虽然是strict模式,但语句var x = 'Hello, ' + y;并不报错,原因是变量y在稍后申明了。但是alert显示Hello, undefined,说明变量y的值为undefined。这正是因为JavaScript引擎自动提升了变量y的声明,但不会提升变量y的赋值。

对于上述foo()函数,JavaScript引擎看到的代码相当于:

function foo() {    var y; // 提升变量y的申明    var x = 'Hello, ' + y;    alert(x);    y = 'Bob';}
原创粉丝点击