首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js作用

又是因为什么我们要用这个块级作用,本文与你一起探讨块级作用场景以及所有细节问题。...es6之前作用 特点1 :js只有函数级作用以及全局两种 特点2 :不通过var声明变量直接赋值也可以用并且可以访问,原理是直接赋值到了window对象属性变量下,两者如果同时定义,那么会覆盖使用...,利用了函数链接作用特点,同时可以对外暴露部分,将我们需要部分保留在内存。...块级作用 场景一 循环中块级作用 如果我们有一个遍历循环绑定事件,并且需要把当前指针绑定到对应方法。...,利用let块级作用特性,区别就是定义变量时 i是块级变量,所以定义函数变量也是当时块级作用,不随外面非块级元素值变化影响 var arr=[] for(let i=0;i<10;i++)

3.2K20

js块级作用

在上一篇说到了作用,简单介绍了一下块级作用,在这里我们来详细介绍一下。 众所周知,在js函数作用是常见单元作用,也是现行大多数js中最普遍设计方案。...i,而忽略了 i 会被绑定在外部作用(函数或全局)事实。...块作用是一个用来对之前最小授权原则进行扩展工具,将代码从在函数隐藏信息扩展为在块隐藏信息。...因为catch 分句具有块作用,因此它可以在 ES6 之前环境作为块作用替代方案。一些工具可以将 ES6 代码转换成能在 ES6 之前环境运行形式。...console.log( i ); } } 由于 let 声明附属于一个新作用而不是当前函数作用(也不属于全局作用),当代码存在对于函数作用域中 var 声明隐式依赖时,就会有很多隐藏陷阱

2.5K10
您找到你想要的搜索结果了吗?
是的
没有找到

JS作用下 21

charset="UTF-8"> Document /* 注意点: 初学者在研究作用时候最好将...ES6之前和ES6分开研究 1.需要明确: 1.ES6定义变量通过let 2.ES6除了全局作用、局部作用以外, 还新增了块级作用...3.ES6虽然新增了块级作用, 但是通过let定义变量并无差异(都是局部变量) 2.ES6作用链 1.1.全局作用我们又称之为0级作用 2.2....定义函数或者代码块都会开启作用就是1级/2级/3级/...作用 2.3.JavaScript会将这些作用链接在一起形成一个链条, 这个链条就是作用链 0...3.1先在当前找, 找到就使用当前作用找到 3.2如果当前作用域中没有找到, 就去上一级作用域中查找 3.3以此类推直到0级为止, 如果0级作用还没找到, 就报错

1.3K20

JS作用作用

JS作用就是在一定空间范围内对数据进行读写操作。 在JS中一个变量作用(scope)是程序定义这个变量区域。 变量有全局变量和局部变量两种。...注:这边“定义”,我认为有“创建与下定义”意思,比如定义一个函数,定义一个方法,都是先创建一个函数,再给它里面添加一些东西。 下面就要借助JS作用链来更好理解作用了。...此外还要讲下JS作用域中块级作用JS是没有块级作用这个概念。 什么是块级作用呢?...JS并不支持块级作用,它只支持函数作用,而且在一个函数任何位置定义变量在该函数任何地方都是可见。 那么JS又该怎么拥有块级作用呢?...根据“在一个函数定义变量,当这个函数调用完之后,变量会被销毁”特性,来模拟出JS块级作用

4.1K30

JS基础——作用作用

作用 [[scope]],函数定义时自动生成一个隐式属性,是用来存储函数作用链 Scope Chain容器。作用链是用来存储函数执行上下文 AO和全局执行上下文 GO容器。...函数被定义时,系统会为函数生成[[scope]],[[scope]]中保存该函数作用链,并从该作用起始位置开始存储当前环境作用链。...,并将GO插入到作用起始位置。...函数a被执行前一刻,会生成函数aAO,插入到其作用起始位置。 Tips:此时虽然函数aAO已经有了函数b引用,但是函数b还是未被定义。...函数a被执行时,此时函数b也被定义,函数b[[scope]]也在此时生成,其中存储函数b作用链,并将当前环境作用链插入函数b作用起始位置,即函数aAO和GO。

3.5K10

JS作用

JavaScript作用有全局作用和局部作用 先通过一下代码来体验下作用 var x = 1; function f1(){ var y = 2; x = 10; console.log...ReferenceError: y is not defined at :7:13 上述代码变量x就是全局作用,方法f1作用也是全局,f1方法变量y是局部,y作用范围仅限f1方法体内...,离开了f1方法体作用范围,就无法获取到y值,所以上述例子中最后打印y时候是undefined 我们再来看下面的例子 var a = 1; function f1(){ console.log...a,当前a值为undefined 4-3)定义局部变量c,当前c值为undefined 4-4)给局部变量b进行赋值,使用2*a表达式结果进行赋值,由于a值为undefined,...所以b值为NaN(Not a Number) 4-5)给局部变量a赋值为20 4-6)给局部变量c进行赋值,使用a+1表达式结果进行赋值,由于上一步局部变量a值为20,所以a+1表达式值为

8410

JS作用链上 20

"时候最好将ES6之前和ES6分开研究 1.需要明确: 1.ES6之前定义变量通过var 2.ES6之前没有块级作用, 只有全局作用和局部作用...3.ES6之前函数大括号外都是全局作用 4.ES6之前函数大括号都是局部作用 2.ES6之前作用链 2.ES6之前作用链...1.1.全局作用我们又称之为0级作用 2.2.定义函数开启作用就是1级/2级/3级/...作用 2.3.JavaScript会将这些作用链接在一起形成一个链条..., 这个链条就是作用链 0 ---> 1 ----> 2 ----> 3 ----> 4 2.4.除0级作用以外, 当前作用级别等于上一级+1...3.变量在作用链查找规则 3.1先在当前找, 找到就使用当前作用找到 3.2如果当前作用域中没有找到, 就去上一级作用域中查找 3.3以此类推直到0

66920

JS进阶:作用作用

作用(Scope) 1.什么是作用 作用是在运行时代码某些特定部分变量,函数和对象可访问性。换句话说,作用决定了代码区块变量和其他资源可见性。...2.全局作用和函数作用 在代码任何地方都能访问到对象拥有全局作用,一般来说以下几种情形拥有全局作用: 最外层函数 和在最外层函数外面定义变量拥有全局作用 var outVariable...全局作用有个弊端:如果我们写了很多行 JS 代码,变量定义都没有用函数包括,那么它们就全部都在全局作用域中。这样就会 污染全局命名空间, 容易引起命名冲突。...因为放在里面的所有变量,都不会被外泄和暴露,不会污染到外面,不会对其他库或者 JS 脚本造成影响。这是函数作用一个体现。...你基本上可以用 let 来代替 var 进行变量声明,但会将变量作用限制在当前代码块

2.5K20

了解 JS 作用作用

(1)作用 一个变量作用(scope)是程序源代码定义这个变量区域。 1....在JS中使用是词法作用(lexical scope) 不在任何函数内声明变量(函数内省略var也算全局)称作全局变量(global scope) 在函数内声明变量具有函数作用(function...JS声明提前 js函数作用是指在函数内声明所有变量在函数体内始终是可见。...引入一大段话来解释: 每一段js代码(全局代码或函数)都有一个与之关联作用链(scope chain)。 这个作用链是一个对象列表或者链表,这组对象定义了这段代码作用域中”变量。...作用链举例: 在js最顶层代码(也就是不包括任何函数定义内代码),作用链由一个全局对象组成。

2K10

js作用详解

js对象 众所周知,js所有数据类型都是一个对象,例如: var a = 1; console.log 声明a=1;a属于number类型,但是number类型又是number对象,有着以下方法: interface...atest其实是一个window对象下方法对象 var 局部变量作用 var 声明一个对象,只作用当前作用以下。...同时,在子作用声明方法,只能在当前作用或者下层作用调用 闭包函数,闭包作用 闭包函数,又称匿名函数,例如:     (function () {         var a...在闭包函数声明变量,只能在闭包函数内作用,以及下层作用使用,可通过return 对象,通过return对象声明方法进行返回,使得上级作用能成功访问到闭包作用变量 return作用变量访问情况...2:js作用是往下通用,下层作用可访问上层作用变量,并可修改值 3:js下层作用变量和上层同名冲突时,下层作用将覆盖上层变量,但上层作用访问不受影响 4:不适用var方法定义变量,

2.5K10

JavaScript作用作用

作用(Scope) 1. 作用 作用是在运行时代码某些特定部分变量,函数和对象可访问性。换句话说,作用决定了代码区块变量和其他资源可见性。...全局作用 在代码任何地方都能访问到对象拥有全局作用,一般来说以下几种情形拥有全局作用: 最外层函数和在最外层函数外面定义变量拥有全局作用 var outVariable = "我是最外层变量...全局作用有个弊端:如果我们写了很多行 JS 代码,变量定义都没有用函数包括,那么它们就全部都在全局作用域中。这样就会 污染全局命名空间, 容易引起命名冲突。...因为放在里面的所有变量,都不会被外泄和暴露,不会污染到外面,不会对其他库或者 JS 脚本造成影响。这是函数作用一个体现。...你基本上可以用 let 来代替 var 进行变量声明,但会将变量作用限制在当前代码块。块级作用有以下几个特点: 1.声明变量不会提升到代码块顶部。

2.1K10

js作用作用链和它一些优化

前言作用作用链是所有JavaScript开发人员每天都要接触和应用内容。不管是面试作用面试考察,还是日常代码研发变量与作用构建,它身影几乎无处不在。...而这篇文章,就是想要和大家聊聊有关JavaScript作用以及作用那些事情,以及针对它们一些我们在代码优化小技巧。...作用我们可以把作用理解为上面讲到这套规则下限定范围。作用职责是,在这段限定范围根据这套设计好规则存储所声明变量,并且提供修改该变量支持。...另外,每一个ES Module都具有模块自己顶级作用(top-level scope),模块顶级作用变量和函数都包含在这个模块顶级作用域中,而模块作用外部作用是全局作用。...相关优化综合上面的标识符解析过程和作用以及作用关系,我们可以了解到,变量标识符解析性能是和变量标识符所处在作用位置是息息相关

1.7K00

JS学习系列 03 - 函数作用和块作用

在 ES5 及之前版本,JavaScript 只拥有函数作用,没有块作用(with 和 try...catch 除外)。在 ES6 JS 引入了块作用,{ } 内是单独一个作用。...采用 let 或者 const 声明变量会挟持所在块作用,也就是说,这声明关键字会将变量绑定到所在任意作用域中(通常是 {...} 内部)。 今天,我们就来深入研究一下函数作用和块作用。...函数作用 函数作用含义是指,属于这个函数任何声明(变量或函数)都可以在这个函数范围内使用及复用(包括这个函数嵌套内作用)。...总结来说,作用可以起到两个作用: 私有化变量或函数 规避同名冲突 1.2 函数声明和函数表达式 如果 function 是声明第一个词,那么就是一个函数声明,否则就是一个函数表达式。...块作用 ES5 及以前 JavaScript 具有块作用只有 with 和 try...catch 语句,在 ES6 及以后版本添加了具有块作用变量标识符 let 和 const 。

1.6K10
领券