JS笔试题(5)变量预解析

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> JS笔试题(5)变量预解析

题目

    if (!(“b”in window)) {

       var b = 1;

    }

    console.log(b);

控制台的打印结果是什么?

答案:undefined

Window 对象表示一个浏览器窗口或一个框架。Window 对象是全局对象,所有的表达式都在当前的环境中计算,所有的全局变量都是window的属性 。

JS中变量会预解析,所谓的预解析就是:在当前作用域中,JavaScript代码执行之前,浏览器首先会默认的把所有带var和function声明的变量进行提前的声明或者定义。

变量只有声明没有赋值,会返回undefined。

题中代码,其实引擎是这样读取的:

        var b;

        if (!(“b”in window)) {

            b = 1;

        }

        alert(b);

(1)声明一个变量b。

(2)”b” in window 结果为true,!(“b” in window)结果为false。

(3)if语句不执行。

(4)alert(b),因为b只有声明没有赋值,所以结果是undefined

JS笔试题(5)变量预解析感谢阅读~~~

dvdf

JS笔试题(5)变量预解析

始发于微信公众号: 前端麻辣烫

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> JS笔试题(5)变量预解析