文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

JavaScript预解析

2023-06-02 10:10

关注

1Q:未声明变量,直接输出会出现什么结果?

console.log(num);

1A:报错:变量未被定义。

Uncaught ReferenceError: num is not defined

2Q:在输出变量后才声明并赋值变量会出现什么结果?1

console.log(num);

var num = 10;

2A:显示undefined。

undefined

3Q:先调用函数,再定义函数会出现什么结果?2

fn();

function fn() {

    console.log('Javier_Ji');

}3A:正常显示。

Javier_Ji

4Q:先调用函数,再声明函数表达式会出现什么结果?3

fn();

var fn = function() {

    console.log('Javier_Ji');

4A:错误:fn不是函数。

Uncaught TypeError: fn is not a function

解释

JavaScript代码是由浏览器中的JavaScript解析器来执行的。JavaScript解析器在运行JavaScript代码的时候分为两步:

预解析:js引擎会把js里面的所有的var以及function提升到当前作用域的最前面。

代码执行:按照代码书写的顺序从上往下执行。

预解析分为:变量预解析(变量提升)和函数预解析(函数提升)

变量提升:把所有的变量声明提升到当前的作用域最前面,不提升赋值操作。

函数提升:把所有的函数声明提升到当前的作用域最前面,不调用函数。

示例

下面的代码执行后会得到什么结果?4

fn();

console.log(c);

console.log(b);

console.log(a);

function fn() {

    var a = b = c = 9;

    console.log(a);

    console.log(b);

    console.log(c);

}

执行后结果如下:

Uncaught ReferenceError: a is not defined

针对2Q的解答

先预解析,相当于执行了如下代码:

var num;股票代码https://www.gendan5.com/topic/lcSearch.html

var num;   //把变量声明提升到当前作用域(本例中是全局)最前面

console.log(num); //执行后续的代码

num = 10;   //赋值

针对3Q的解答

先预解析,相当于执行了如下代码:

function() {

    console.log('Javier_Ji');

}    //把函数声明提升到当前作用域(本例中是全局)最前面

fn();   //执行后续的代码,函数被正常调用

针对4Q的解答

先预解析,相当于执行了如下代码:

var fn;   //把var声明提升到当前作用域(本例中是全局)最前面

fn();   //执行后续的代码,由于函数还没被定义,且var fn;语句定义的是变量,则会报错,fn不是函数

function() {

    console.log('Javier_Ji');

}    //执行后续的代码

针对示例的解答

先预解析,相当于执行了如下代码:

function fn() {

    var a;    

    a = b = c = 9;

    console.log(a);

    console.log(b);

    console.log(c);

}

fn();

console.log(c);

console.log(b);

console.log(a);

       本例中的代码var a = b = c = 9;相当于先在函数内部定义变量var a,之后赋值a = b = c = 9,由此可得,变量a的作用域是在fn函数内部,而b和c相当于定义了一个全局变量。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯