JavaScript var声明变量的问题

function test() {


    console.log(name);//undefined

    var name = 'nicholas';
    console.log(name); //nicholas

    if (true) {
        var name = 'matter';
        console.log(name); //matter
    }

    console.log(name); //matter


}

test();

当我把函数体里面的内容单独写出来的时候

console.log(name);//matter

var name = 'nicholas';
console.log(name); //nicholas

if (true) {
    var name = 'matter';
    console.log(name); //matter
}

console.log(name); //matter

为什么第二段代码log出来的值是matter呢,放在函数里面是undefined是因为把var声明提前了。但是单独写出来为什么不是undefined或直接报错

  • 初学js,请大佬们指点一下
  • 大佬们轻喷~
阅读 2.2k
4 个回答
console.log(name);//undefined 

var name = 'nicholas';
console.log(name); //nicholas

if (true) {
    var name = 'matter';
    console.log(name);  //matter
}

console.log(name); //matter

正确结果如上,你得结果是错的

你按f5刷新一下浏览器,再试试跑第二段

控制台把你的第一次运行的结果记住了,你再运行第二段代码初始name就是matter

谢谢大佬们,我重新运行了下 结果如下是<empty string>

console.log(name);//<empty string>

var name = 'nicholas';
console.log(name); //nicholas

if (true) {
    var name = 'matter';
    console.log(name); //matter
}

console.log(name); //matter
  • 火狐运行的结果

image.png

  • chrome运行的结果

image.png

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