javascript中一些难以理解的专有名词 1(也不是很专有)
变量提升
- 变量提升:是指js代码执行过程中,js引擎把变量的声明和函数的声明提升到代码的开头的“行为”。
- 变量和函数在代码里的位置是不会变的,而是在编译阶段被js引擎放入内存中。
- 变量提升后,会给变量设置默认值,undefined。
- 带来的问题
- 变量会被覆盖
foo() // foo2
function foo() { console.log('foo1') }
function foo() { console.log('foo2') }
- 应该销毁但没有销毁
function foo() {
for(var i = 0;i < 10;i++) {}
console.log(i) //10
}
foo()
- 变量会被覆盖
执行上下文
- 执行上下文是js执行一段代码时的运行环境
- 执行上下文的种类
- 全局执行上下文(在整个页面的生存周期内)
- 函数执行上下文(调用一个函数的时候,函数体里面的代码被编译,会创建函数执行上下文,函数执行结束,会销毁(一般情况下))
- eval执行上下文(用的很少)
调用栈
- 用来管理函数调用关系的ds
作用域
- 作用域:在程序中定义变量的区域,该区域决定了变量的声明周期
- 人话: 变量和函数的可访问范围
- 作用域控制变量和函数的可见性和声明周期
- 种类:
- 全局作用域 : 代码中任何地方都可以访问到这个作用域。生命周期最长
- 函数作用域 : 函数内部定义的变量或函数,并且定义的变量或函数只能在函数内部访问,函数执行结束后,会被销毁。
- 块级作用域 : 作用块内声明的变量不影响块外面的变量(let 和 const 都可以形成块级作用域 )。
- e.g
function foo() {
var a = 1;
let b = 2;
{
let b = 3;
var c = 4;
let d = 5;
console.log(a);
console.log(b);
}
console.log(b);
console.log(c);
console.log(d);
}
foo()
- var 声明的 ,会被放到变量环境里面(es6) es3 放到变量对象里
- let 声明的, 会被放到词法环境中
- 在函数的作用域内部,通过let声明的变量并没有被存放到词法环境中
javascript中一些难以理解的专有名词 1(也不是很专有)的更多相关文章
- JavaScript中的闭包理解
原创文章,转载请注明:JavaScript中的闭包理解 By Lucio.Yang 1.JavaScript闭包 在小学期开发项目的时候,用node.js开发了服务器,过程中遇到了node.js的第 ...
- javascript中 (function(){})();如何理解?
javascript中 (function(){})();如何理解? javascript中: (function(){})()是匿名函数,主要利用函数内的变量作用域,避免产生全局变量,影响整体页面环 ...
- 关于javascript中闭包的理解
闭包就是能够读取其他函数内部变量的函数. 在javascript中,只有函数内部的子函数可以读取局部变量,因此,我理解闭包就是定义在一个函数内部的函数. 例子: var f1 = function() ...
- 对JavaScript中this的理解
JavaScript中的this其实没传说中的那么难,也没那么乱. 我们来分析下,this主要是跟它的执行环境有关. 而通常情况下,this都是放在函数体中或可执行的JS代码中(函数体除外). 至于J ...
- 对JavaScript中闭包的理解
在前端开发中闭包是一个很重要的知识点,是面试中一定会被问到的内容.之前我对闭包的理解主要是"通过闭包可以在函数外部能访问到函数内部的变量",对闭包运用的也很少,甚至自己写过闭包自己 ...
- 转:对JavaScript中闭包的理解
关于 const let var 总结: 建议使用 let ,而不使用var,如果要声明常量,则用const. ES6(ES2015)出现之前,JavaScript中声明变量只有 ...
- JavaScript 中this 初步理解笔记
Javascript中函数中的this通常指向的是函数的拥有者,这个拥有者就是上下文执行对象:另外一点需要注意,this只能在javascript函数内部使用.
- javascript中的原型理解总结
经过几天研究查找资料,对原型终于有点理解了,今天就做下总结,不对之处,希望各位能够提出. 1.每一个Javascript对象(null除外)都和另一个对象相关联,“另一个”对象就是我们今天所要总结的原 ...
- javascript 中{}和[] 的理解
下面的一段解释是摘抄的,基本理解正确,做个记录.其实js中数组其实就是对象,typeof(['a', 'b', 'c'])//测试之后结果为 : "object" 一.{ } 大 ...
- 第二话:javascript中闭包的理解
闭包是什么? 通过闭包,子函数得以访问父函数的上下文环境,即使父函数已经结束执行. OK,我来简单叙述下,先上图. 都知道函数是javascript整个世界,对象是函数,方法是函数,并且js中实质性的 ...
随机推荐
- 推荐Visual Studio四款好用插件
我要推荐的4个插件,合理使用可以提高工作效率,分别是: 1.Markdown Editor 可以在vs预览markdown文件的插件 2.Add New File 我们原本在vs中新建文件,需要添加新 ...
- C语言快速入门教程1快速入门 2指令 3条件选择
快速入门 什么是C语言? C是一种编程语言,1972年由Dennis Ritchie在美国AT & T的贝尔实验室开发.C语言变得很流行,因为它很简单,很容易使用.今天经常听到的一个观点是-- ...
- 2022-08-17:以下go语言代码输出什么?A:运行时 panic;B:32;C:编译错误;D:0。 package main func main() { var x *struct {
2022-08-17:以下go语言代码输出什么?A:运行时 panic:B:32:C:编译错误:D:0. package main func main() { var x *struct { s [] ...
- 没想到还有这种骚操作~如何使用Golang实现无头浏览器截图?
前言 在Web开发中,有时需要对网页进行截图,以便进行页面预览.测试等操作. 而使用无头浏览器来实现截图功能,可以避免手动操作的繁琐和不稳定性. 这篇文章将介绍:使用Golang进行无头浏览器的截图, ...
- 一个.Net开发的功能强大、易于使用的流媒体服务器和管理系统
推荐一个视频管理系统,非常适合个人或者公司打造视频网站. 项目简介 这是基于.Net Core开发的,跨平台的开源项目:支持多种音视频格式,如MP3.MP4.AVI.WMV.FLV等:支持本地管理与远 ...
- ThreadLocal 的应用及原理
1. 是什么 JDK 对 ThreadLocal 类的描述为: 此类提供线程局部变量.这些变量与普通变量的不同之处在于,每个访问一个变量的线程(通过其get或set方法)都有自己的.独立初始化的变量副 ...
- Road
首先进行端口扫描22 80 使用nmap进行vuln nmap -sS --script=vuln 10.10.236.244 10.10.236.244/v2/admin/login.html 随便 ...
- selenium4-定位组元素
总体思路:find_elements() 该方法将所有定位到的元素放到一个列表中,再通过列表的下标定位到具体元素. 例1.使用tag name定位到百度搜索框,并输入selenium关键字 servi ...
- 园子的商业化努力-行行AI人才培养「常青藤计划」
各位园子的小伙伴: 感谢大家长期对园子的支持,AI大模型出现之后,各行各业都在积极思考如何应对,如何把业务场景和AI结合.在这个过程中,AI人才缺乏是最核心的问题. 基于此,园子打算在AI人才培养方面 ...
- Python-Loguru:让记录日志更装13
" 今天勇哥来介绍一款让日志记录在 Python 中变得更加轻松愉快的库--Loguru.它提供了强大的功能和简洁的接口,使我们能够以更加灵活和直观的方式记录和管理日志信息,据说比loggi ...