js高程3.3变量那节内容

书上说这样会报错:

function test() {
    var message = 'hi';
}
test();
alert(message);

这样确实报错了,把message换个别的名字也报错了,但是如果把message替换成name,如下,是可以执行 alert(name) 的,为什么?
na

function test() {
    var name = 'hi';
}
test();
alert(name);
阅读 1.9k
3 个回答

alert(name)其实是alert(window.name)
恰好window有name属性。

因为name是winodw的属性,你打印出去window就知道。
图片描述

你代码写错了,应该是name='zoe' 而不是var name='zoe',因为一个函数中,用var申明一个变量,这个变量的作用域就仅限于这个函数,而如果前面不加var,则默认为全局变量,所以不会报错

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题