摘要:注意申明的权重函数的形参申明声明声明也就之前提高的变量提升第部分执行先执行,再执行两个,再执行函数表达式申明,及执行。
一段代码看出JS的的解析到执行的顺序规则 代码
function bar(a, b) { b = 3; var b; function b(){} console.log(a); // 打印出:10 console.log(b); // 打印出:3 return function a(){}; } bar(10);执行顺序 函数外面的时候,代码拆成前后两部分来看: 第 1 部分:(申明)
1、申明了一个bar=undefined的函数变量,用代码可以看成:(VO是执行上下文,可以看成是this
)
VO = {bar:undefined}第 2 部分:(执行)
2、执行bar(10)这里由于是函数,存在独立作用域,只要存在作用域就先解析,所以这里又可以拆成两部分来看:
先声明a=10,b=undefined两个形参变量,再申明函数变量b=function b(){},由于上下文VO1中已经存在 b 了,所以会覆盖掉形参b的申明,然后再申明var变量b=undefined,并覆盖已经存在VO1中函数变量b,用代码表示:
VO1 = {a:10,b:undefined}
注意:这里需要注意的是函数表达式return function a(){}并不会提前申明,函数表达式和函数申明的异同是,除了标准的函数申明:function a(){},其他的都是函数表达式,如:var a = function (){}、(function a(){})...等。
注意:申明的权重:argument(函数的形参申明) > function声明 > var声明 (也就之前提高的变量提升Hoisting)
先执行b=3,再执行两个console.log,再执行:函数表达式申明,及执行。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/92108.html
摘要:并发编程关键字解析解析概览内存模型的相关概念并发编程中的三个概念内存模型深入剖析关键字使用关键字的场景内存模型的相关概念缓存一致性问题。事实上,这个规则是用来保证程序在单线程中执行结果的正确性,但无法保证程序在多线程中执行的正确性。 Java并发编程:volatile关键字解析 1、解析概览 内存模型的相关概念 并发编程中的三个概念 Java内存模型 深入剖析volatile关键字 ...
摘要:自定义规则校验代码业务逻辑是社区中主流的工具,提供的大量规则有效的保障了许多项目的代码质量。本文将介绍如何通过自定义检查规则,校验项目中特有的一些业务逻辑,如特殊作用域特殊使用规范性等。 自定义 eslint 规则校验代码业务逻辑 eslint 是 JavaScript 社区中主流的 lint 工具,提供的大量规则有效的保障了许多项目的代码质量。本文将介绍如何通过自定义 eslint ...
摘要:现实中是这样的执行结果为结果告诉我们,是单线程没错,不过不是逐行同步执行。搜索了很多官方个人博客得到了一堆词引擎主线程事件表事件队列宏任务微任务,彻底懵逼。。。以此规则不停的执行下去就是我们所听到的事件循环。 都知道javascript是单线程,那么问题来了,既然是单线程顺序执行,那怎么做到异步的呢? 我们理解的单线程应该是这样的,排着一个个来,是同步执行。 showImg(https...
摘要:全局变量局部变量全局函数一段也是一块域。此时打印的自然是,要记住相当于,所以这时候改变的是局部变量,并没有影响到全局变量,所以第二次打印的依然是。 在熟悉了浏览器的工作原理之后,今天我们来讲讲浏览器在从服务器获取到网页文件之后是如何解析的。了解了这个基础知识,对敲出来的代码,质量会有不小的提升。 一、浏览器如何解析html html文件在没有写入html标签之前和txt文本是一个性质的...
阅读 2064·2021-11-24 09:39
阅读 1496·2021-10-11 10:59
阅读 2455·2021-09-24 10:28
阅读 3340·2021-09-08 09:45
阅读 1242·2021-09-07 10:06
阅读 1580·2019-08-30 15:53
阅读 2032·2019-08-30 15:53
阅读 1396·2019-08-30 15:53