JS的变量提升怎么回事?JS是由上至下解释执行的,那下面定义的变量上面是怎么知道的?

weixin_38056302 2019-04-03 11:09:08
JS的变量提升怎么回事?JS是由上至下解释执行的,那下面定义的变量上面是怎么知道的?
...全文
65 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38068785 2019-04-04
  • 打赏
  • 举报
回复
var name = "Hello";
function foo(){
// 实质上相当于: var name;
console.log(name); // undefind
var name = "World";
}
foo(); 你说的是这个问题吗?js执行是顺序执行。但是在编译的时候,JS会把所有的var声明变量都提升到当前上下文的顶端。避免这个问题,可以考虑使用: let 来声明变量。let变量必须先声明后使用。
weixin_38065391 2019-04-04
  • 打赏
  • 举报
回复
背景知识: JavaScript 是由上至下解释执行的, 但 其 函数及变量的声明都将被提升到函数的最顶部。 js 变量提升: 变量可以在使用后声明,也就是变量可以先使用再声明, 但 js 初始化不会提升。 js 通过 var 语句来声明  变量:var x; 或 var carname; 在以上声明之后,变量并没有值。 js 可以在声明它们时向变量赋值:var x=5; 或 var carname="Volvo"。 js 声明变量,并赋值(初始化、设置)的时候, 变量前边可以加、亦可以不加 var。就是说,不用 var 语句,也可以做到声明变量,并给它 赋值/初始化/设置。 Js 的变量提升是针对var的,而let和const不存在变量提升这一特性。      设想,若事后声明 变量 x, 事前不用 var 语句,就为其赋值,那不就是赋值的时候,“声明并初始化” x 了吗? 事实上不就是 var x 变量提升了吗?     用 var 语句声明变量 x 但不赋值,其作用只能是规定了这个变量 x 的作用域。 下列案例说明 js 是如何“提升”变量。 js 声明变量,并赋值(初始化、设置)的时候, 变量前边可以加、亦可以不加 var。就是说,不用 var 语句,也可以做到声明变量,并给它 赋值/初始化/设置。 接下来,在输出 x 值之后,再声明 变量 x, 即添加代码行 var x。如果没有对 x 赋值,其值仍旧保留声明之前的样子。这不就是 var x 变量提升的案例吗?[案例如下]
s='';
x=11;
s +='没有加 var, 直接给 x 赋值。结果 x: ' + x;
var x;
s += '。<br>后来, 仅仅声明了变量 x,';
s += ' 并未对其从新赋值,变量 x 则保留原来的数值。' ;
s += ', x: ' + x;
document.write(s);
输出:
没有加 var, 直接给 x 赋值。结果 x: 11。
后来, 仅仅声明了变量 x, 并未对其从新赋值,变量 x 则保留原来的数值。, x: 11 参考: js的变量提升是什么意思?js变量提升使用介绍(实例)    

476

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧