浏览器中js的执行机制

4 篇文章 0 订阅
订阅专栏
1 篇文章 0 订阅
订阅专栏

变量提升

代码会先编译再执行

编译期间会发生变量声明提升和函数声明提升

变量提升其实是变量声明的提升

变量生命的提升会设置默认值undefined

声明式函数提升包含整个函数体

重名的情况:

1. 如果声明式函数和声明式函数重名,则使用后者

2. 如果变量和声明式函数重名,则变量的提升会被忽略

调用栈

调用栈,是执行上下文的栈

每执行一个函数,就会形成一个执行上下文,压入栈中

执行上下文包括:变量环境 + 词法环境

函数执行完成之后,会出栈

栈的大小是有限制的,如果一直压栈,就会造成栈溢出 

var的缺陷以及为什么要有let和const

什么是作用域?

作用域就是变量与函数的可访问范围,即作用域控制着变量和函数的可见性和生命周期

var定义的变量存在变量生命的提升,变量提升会造成一些问题,比如:

1. 变量突然被篡改

2. 变量没有正确的被回收(for循环)

块级作用域是通过词法环境的栈结构实现,变量提升是通过变量环境实现

总结:块级作用域是通过词法环境的栈结构实现,变量提升是通过变量环境实现。

ES6 明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。(暂时死区)

作用域链

作用域链是作用域中寻找变量的一条链路

作用域链路由词法作用域(代码结构:由代码中函数声明的位置来决定)决定

块级作用域查找顺序如下图:

 闭包

闭包是变量的集合,内部函数访问外部函数的局部变量,并且返回内部函数,访问的这些局部变量的集合就称为一个闭包,闭包是一个object,则实际数据存在了堆内存中。

This指向

 

js执行上下文分为三种:全局执行上下文;函数执行上下文和eval执行上下文

全局执行上下文中的this指向window

函数执行上下文:

1. 默认也是指向window

2. 设置this

  • call,apply,bind修改this指向
  • 对象调用函数,this指向调用函数的当前对象
  • 构造函数中的this,指向new出来的实例
  • function CreateObj() {
        this.name = 'JFrameSea'
    }
    var obj = new CreateObj();
    // new 的实际过程
    /**
    * 1. 创建一个空对象
    * 2. 修改构造函数的this为该空对象
    * 3. 返回该空对象
    */
    var tempObj = {}
    CreateObj.call(tempObj)
    return tempObj

js浏览器运行机制
weixin_43445613的博客
05-15 1071
js浏览器运行机制 浏览器工作原理: 浏览器的网络流程,页面渲染的流程,js执行流程,web安全 浏览器的多进程架构 进程和线程 并行处理 能大大提升性能 多线程可以并行处理任务,但是线程不能单独存在的,它是由进程来启动和管理的。 一个进程就是一个程序运行实例,操作系统为一个程序创建一个内存,用来存放代码,运行数据和执行主线程,这样的运行环境叫进程。 线程依附于进程 1进程任意一个线程执行出错,都会导致怎个进程崩溃 2线程之间可以共享数据 3当一个进程关闭后,操作系统会回收操作系统占用的内存 4
浏览器JavaScript执行机制
qq_40511157的博客
08-31 538
一、js执行顺序 这里需要特别提的是词法环境。 词法环境(即作用域)是js引擎内部用来跟踪标识符和特定变量之间的映射关系。 词法环境主要基于代码嵌套,通过代码嵌套可以实现代码结构的包含关系。 在作用域范围内,每次执行代码时,代码结构都会获得与之关联的词法环境,而我们知道内部代码结构可以访问外部代码结构定义的变量,外部代码结构不能访问内部代码结构定义的变量,js引擎就是根据词法环境来进行这些变量的跟踪的。 因为需要能够访问到外部代码结构,所以需要跟踪外部词法变量,如果当前环境无法找到某一个标识符,就会对
JS运行机制浏览器篇)
m0_62762847的博客
11-21 759
JS运行机制
JS浏览器执行机制
weixin_33881050的博客
01-03 541
JS执行机制进行一些梳理 单线程 JS是单线程执行的,但并不代表浏览器只有一个线程,它还包括: UI渲染线程 浏览器事件触发线程 http请求线程 计时器线程 EventLoop轮询的处理线程 JS可以操作dom,影响渲染,所以JS线程和UI线程是互斥的,这也就解释了为什么JS执行时会阻塞页面的渲染。 单个JS文件语句的执行机制 所有的同步语句,直接执行 如果遇到异步任务,就把它放到浏览...
浏览器执行JS
qq_73778722的博客
02-21 119
浏览器本身并不会执行JS代码,而是通过内置 JavaScript 引擎(解释器) 来执行 JS 代码。JS 引擎执行代码时逐行解释每一句源码(转换为机器语言),然后由计算机去执行,所以 JavaScript 语言归为脚本语言,会逐行解释执行。比如 Trident(IE)、Gecko(firefox)、WebKit(safari)、Blink(Chrome)。2.JS 引擎:也称为 JS 解释器。用来读取网页JavaScript代码,对其处理后运行,比如 chrome 浏览器的 V8。
详解JS浏览器事件循环机制
12-09
线程是进程的执行流,是CPU调度和分派的基本单位,同个进程之的多个线程之间是共享该进程的资源的。 浏览器内核 浏览器是多进程的,浏览器每一个 tab 标签都代表一个独立的进程(也不一定,因为多个空白 tab 标签...
javascript运行机制执行顺序理解
11-19
JavaScript是一种描述型脚本语言,它不同于java或C#等编译性语言,它不需要进行编译成语言,而是由浏览器进行动态地解析与执行。如果你不能理解javaScript语言的运行机制,或者简单地说,你不能掌握javascript的...
前端新手需知的浏览器渲染机制
01-08
文章目录一,浏览器的基本结构二,浏览器内核三,渲染流程(1)构建DOM树(2)构建CSSOM树(3)执行渲染四,Javascript加载串行异步 一,浏览器的基本结构
浅析JavaScript的事件机制
01-19
开发者可以使用这些事件执行JavaScript编码响应,这引起按钮以关闭视窗,消息,以便显示给用户,要验证的数据,以及几乎任何其它类型的响应可以发生的。 事件是文档对象模型(DOM)第3级,每一个HTML元素的一部分有一...
谈谈JavaScript的垃圾回收机制
01-21
JavaScript 具有自动垃圾收集机制,也就是说,执行环境会负责管理代码执行过程使用的内存。  在编写 JavaScript 程序时,开发人员不用再关心内存使用问题,所需内存的分配以及无用内存的回收完全实现了自动管理。...
解决浏览器不能执行js的可执行文件
09-15
解决浏览器不能执行js的可执行文件,请使用管理员的身份运行,主要是针对ie浏览器,解决网页无法执行javascript
浏览器-js,运行机制
qq_24892029的博客
06-27 482
js运行机制浏览器执行原理
浏览器执行JS过程
weixin_51930617的博客
09-01 400
浏览器执行JS过程 浏览器分成两部分:渲染引擎和JS引擎 渲染引擎:用来解析HTML与CSS,俗称内核,比如chrome浏览器的blink,老版本的webkit JS引擎:也称为JS解释器。用来读取网页JavaScript代码,对其处理后运行,比如chrome浏览器的V8 浏览器本身并不会执行JS代码,而是通过内置JS引擎(解释器)来执行JS代码。JS引擎执行代码时逐行解释每一句源码(转换为机器语言),然后由计算机去执行,所有JavaScript语言归为脚本语言,会逐行解释执行。 ...
浏览器原理 08 # 块级作用域:var缺陷以及为什么要引入let和const?
学习前端这门手艺,栈底到栈顶依次是:浏览器架构、Web 网络、事件循环机制、JavaScript 核心、V8 的内存管理、浏览器的渲染流程、Web 安全、CSS、React、Vue、Node、构建工具链等
03-21 513
说明 【浏览器工作原理与实践】专栏学习笔记 前言 由于 JavaScript 存在变量提升这种特性,从而导致了很多与直觉不符的代码,这也是 JavaScript 的一个重要设计缺陷。 分析为什么在 JavaScript 会存在变量提升,以及变量提升所带来的问题 介绍如何通过块级作用域并配合 let 和 const 关键字来修复这种缺陷 作用域(scope) 作用域是指在程序定义变量的区域,该位置决定了变量的生命周期。通俗地理解,作用域就是变量与函数的可访问范围,即作用域控制着变量和函数的可见性
浏览器js执行顺序
The Void
03-09 995
标签引入脚本有三种情况: 立即执行 顺序:保证先后顺序。解析:HTML 解析器遇到它们时,将阻塞(取停止解析),待脚本下载完成并执行后,继续解析标签之后的文档。 推迟执行 顺序:保证先后顺序。解析:HTML 解析器遇到它们时,不阻塞(脚本将被异步下载),待文档解析完成之后,执行脚本。 尽快执行 顺序:不保证先后顺序。解析:HTML 解析器遇到它们时,
浏览器JavaScript执行原理分析
weixin_46488959的博客
04-26 429
编译时后者会覆盖前者。
next.js 浏览器缓存机制
最新发布
07-28
js等脚本文件可能会随时执行,所以需要从磁盘读取到内存执行,这可能导致IO开销较大,甚至导致浏览器失去响应,如引用\[2\]所述。 对于Nuxt.js,根据引用\[3\],它在Web服务器上预加载应用程序,并将呈现的HTML...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • echarts内通过zrender添加文字,图形等 27574
  • nginx location配置二级目录 17386
  • 利用微信jssdk上传图片,并保存到本地 8101
  • textarea输入的内容保存到数据库,用div显示 8002
  • 毕业设计 校园失物招领 6328

分类专栏

  • #宏观视角下的浏览器 3篇
  • 浏览器工作原理 4篇
  • #浏览器中js的执行机制 1篇
  • 高级前端 9篇
  • css 1篇
  • php之laravel 8篇
  • symfony 4篇
  • java 5篇
  • php 3篇
  • 服务器 4篇
  • Spring 3篇
  • js前台知识 7篇
  • vue 2篇

最新评论

  • Android安卓 + webview + vue 实现图片上传

    JFrameSea: 你说的标签是指的什么

  • Android安卓 + webview + vue 实现图片上传

    鑫有林夕有鑫: web那边怎么调用得标签

  • 高级前端-webpack

    Lansonli: 原创不易,过来支持一下~

  • 高级前端-webpack

    Rex~: 很棒呀,学习啦,谢谢分享!

最新文章

  • Docker相关命令
  • 导航流程:从输入URL到页面展示,这中间发生了什么?
  • TCP协议:如何保证页面文件能被完整送达浏览器?
2023年1篇
2022年5篇
2021年17篇
2020年1篇
2019年3篇
2018年17篇
2017年33篇
2016年69篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司保定百姓网标王多少钱云浮网站推广方案哪家好扬州推广网站公司罗湖百度标王公司东莞网站排名优化公司晋城设计网站报价南山网站搜索优化报价淄博企业网站建设报价通辽网络营销哪家好北海网站推广公司成都网站优化排名公司秦皇岛网站建设设计价格昌都seo优化公司昌吉外贸网站制作报价沙井阿里店铺托管多少钱临沧网站定制报价唐山网站优化按天扣费陇南网站制作设计公司海北网站改版推荐三亚关键词排名包年推广推荐朔州网站优化推广公司乌海seo排名公司阿坝seo网站推广公司醴陵百度seo石岩关键词排名价格益阳SEO按天计费福永网站搭建推荐聊城如何制作网站公司嘉兴网站优化价格梅州网站建设价格歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化