问答详情
源自:7-3 [JavaScript]ES3执行上下文

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

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

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的嘛?


提问者:痞老板很帅 2017-10-20 16:40

个回答

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

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