关于未声明的全局变量的访问问题

来源:7-3 [JavaScript]ES3执行上下文

痞老板很帅

2017-10-20 16:40

请问一下,有没有人知道这么一个问题,就是:

console.log('window.k == null',window.k == null);/*true*/
console.log('window.k == undefined',window.k == undefined);/*true*/

console.log('window.k == k',window.k == k);/*Uncaught ReferenceError: k is not defined:后面这个k报错*/

其中k是没有定义的,当k定义了之后,

window.k == k 就是true了,

咩有定义的时候,console.log(window.k)是undefined

但是console.log(k)就报错,有人知道这个是为什么嘛?

理论上不应该是,不管k有没有定义,window.k不是一直等于k的嘛?


写回答 关注

1回答

  • 上善若汽水4349235
    2017-10-22 20:04:53

    window.k是对象属性,k是变量。对象属性即使未定义也会返回undefined,但变量未定义就会报错。

JavaScript深入浅出

由浅入深学习JS语言特性,且解析JS常见误区,从入门到掌握

281112 学习 · 1020 问题

查看课程

相似问题