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

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

在 ES5 及之前版本,JavaScript 只拥有函数作用,没有作用(with 和 try...catch 除外)。在 ES6 中,JS 引入了作用,{ } 内是单独的一个作用。...采用 let 或者 const 声明的变量会挟持所在作用,也就是说,这声明关键字会将变量绑定到所在的任意作用域中(通常是 {...} 内部)。 今天,我们就来深入研究一下函数作用作用。...作用 ES5 及以前 JavaScript 中具有作用的只有 with 和 try...catch 语句,在 ES6 及以后的版本添加了具有作用的变量标识符 let 和 const 。...在开发和修改代码的过程中,如果没有密切关注哪些代码作用域中有绑定的变量,并且习惯性的移动这些或者将其包含到其他中,就会导致代码混乱。...总结 函数是 JavaScript 中最常见的作用单元。作用指的是变量和函数不仅可以属于所处的函数作用,也可以属于某个代码

1.6K10

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

在 ES5 及之前版本,JavaScript 只拥有函数作用,没有作用(with 和 try...catch 除外)。在 ES6 中,JS 引入了作用,{ } 内是单独的一个作用。...采用 let 或者 const 声明的变量会挟持所在作用,也就是说,这声明关键字会将变量绑定到所在的任意作用域中(通常是 {...} 内部)。 今天,我们就来深入研究一下函数作用作用。...作用 ES5 及以前 JavaScript 中具有作用的只有 with 和 try...catch 语句,在 ES6 及以后的版本添加了具有作用的变量标识符 let 和 const 。...在开发和修改代码的过程中,如果没有密切关注哪些代码作用域中有绑定的变量,并且习惯性的移动这些或者将其包含到其他中,就会导致代码混乱。...总结 函数是 JavaScript 中最常见的作用单元。作用指的是变量和函数不仅可以属于所处的函数作用,也可以属于某个代码

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

js中的作用

在上一篇中说到了作用,简单介绍了一下作用,在这里我们来详细介绍一下。 众所周知,在js中函数作用是常见的单元作用,也是现行的大多数js中最普遍的设计方案。...但其他类型的作用单元也是存在的,并且通过使用其他类型的作用单元甚至可以实现维护起来更加优秀、简洁的代码。这就是我们现在要说的作用。...你可以使用作用来写代码,并享受它带来的好处,然后在构建时通过工具来对代码进行预处理,使之可以在部署时正常工作,这就是要说catch作为作用的意义。...但是隐式的声明作用代码修改过程中很容易忽略掉他的作用位置,所以我们在写代码的时候可以显示的声明一下,就是在他的前后添加上{},这样整个代码的移动不会产生其他的问题。...提供了作用,但是我们应该合理的在代码中使用,结合不同场景使用不同的作用,创造可读、可维护的优良代码

2.6K10

函数作用作用

实际的结果就是在整个代码片段得到周围创建了一个作用气泡,也就是说这段代码中的任何声明都将绑定在整个新创建的包装函数的作用里,而不是先前所在的作用 为什么隐藏“变量”和“函数”是一个非常有用的技术。...作用 尽管函数作用是最常见的作用单元,但是其他类型的作用单元也是存在的,并且通过使用其他类型的作用单元甚至可以实现维护起来更加优秀、简洁 除 JavaScript 外的很多编程语言都支持作用...,变量的声明应该距离使用的地方越近越好,并最大限度地本地化 作用就是对之前的最小授权原则进行扩展的工具, 作用 with with不仅是一个难以理解的结构,同时也是作用的一个例子(作用的一种形式...作用在 es6 引入了新的关键字 let 之后成为了一个非常有用的机制 let 关键字可以将变量绑定到所在的任意作用域中,为其声明的变量隐式地劫持了所在的作用 同样,const 也可以创建作用变量...本质上,声明一个函数内部的变量或函数会在所处的作用隐藏起来,这是有意为之的良好软件的设计原则。 但函数不是唯一的作用单元。作用指的是变量和函数不仅可以属于所处的作用,有可以属于某个代码

2.4K20

作用

什么是作用 ES6 中新增了作用作用由 { } 包括,if 语句和 for 语句里面的 { } 也属于作用。...但是,浏览器没有遵守这个规定,为了兼容以前的旧代码,还是支持在作用之中声明函数,因此上面两种情况实际都能运行,不会报错。 ES6 引入了作用,明确允许在作用之中声明函数。...因为作用内声明的函数类似于let,对作用之外没有影响。但是,如果你真的在 ES6 浏览器中运行一下上面的代码,是会报错的,这是为什么呢?...原来,如果改变了作用内声明的函数的处理规则,显然会对老代码产生很大影响。...根据这三条规则,浏览器的 ES6 环境中,作用内声明的函数,行为类似于var声明的变量。上面的例子实际运行的代码如下。

34030

全局作用、函数作用作用的理解

1.前言 作用是任何一门编程语言中的重中之重,因为它控制着变量与参数的可见性与生命周期。很惭愧,我今天才深入理解JS作用..我不配做一个程序员.....开玩笑,什么时候理解都不晚,重要的是理解了以后能不能深深地扎在记忆里,不能,那就写下来 2.作用 在一个代码(括在一对花括号中的一组语句)中定义的所有变量在代码的外部是不可见的。...没有的时候我们代码也写的好好的,现在新增的概念,我不用不行吗? 来,拋一个典型的问题出来,你就明白作用出现的重要性了。...在ES5时代,还没有作用这个概念,但是当时也有一种解决方法,那就是.. .. .. .. .....、以及作用出现的意义,方便更好的记住。

3K10

JS作用作用

搜索过程始终从作用链的前端开始,然后逐级地向后(全局执行环境)回溯,直到找到标识符为止。 此外还要讲下JS作用域中的作用JS中是没有作用这个概念的。 什么是作用呢?...任何一对花括号({和})中的语句集都属于一个,在这之中定义的所有变量在代码外都是不可见的,我们称之为作用。 函数作用就好理解了,定义在函数中的参数和变量在函数外部是不可见的。...但JS由于没有作用,所以在外仍旧可以访问。...JS并不支持作用,它只支持函数作用,而且在一个函数中的任何位置定义的变量在该函数中的任何地方都是可见的。 那么JS又该怎么拥有作用呢?...根据“在一个函数中定义的变量,当这个函数调用完之后,变量会被销毁”的特性,来模拟出JS作用

4.1K30

JS基础——作用作用

作用 [[scope]],函数定义时自动生成的一个隐式属性,是用来存储函数作用链 Scope Chain的容器。作用链是用来存储函数执行上下文 AO和全局执行上下文 GO的容器。...函数被定义时,系统会为函数生成[[scope]],[[scope]]中保存该函数的作用链,并从该作用链的起始位置开始存储当前环境的作用链。...{ var b = 2; } var a = 1; b(); } var c = 3; a(); 复制代码...函数a被定义时,会为a生成[[scope]]属性,其中存储a的作用链,并将GO插入到作用链的起始位置。...函数a被执行时,此时函数b也被定义,函数b的[[scope]]也在此时生成,其中存储函数b的作用链,并将当前环境的作用链插入函数b作用链的起始位置,即函数a的AO和GO。

3.5K10

JS作用

JavaScript的作用有全局作用和局部作用 先通过一下代码来体验下作用 var x = 1; function f1(){ var y = 2; x = 10; console.log...(x); } console.log(y); //undefined 上面的代码运行后我想大家应该猜到了结果就是undefined 就是报如下的错误,也就是y是个未定义的变量 VM42:7 Uncaught...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...var a = 3; } f1(); console.log(a); 这段代码会怎么输出呢?

9110

Go 代码作用,变量遮蔽问题详解

{ // 代码3 { // 代码4 } } } } 三、作用 (Scope) 3.1 作用介绍 作用的概念是针对标识符的...3.2 作用划定原则 我们可以使用代码的概念来划定每个标识符的作用。一般划定原则就是声明于外层代码中的标识符,其作用包括所有内层代码。而且,这一原则同时适于显式代码与隐式代码。...3.3 标识符的作用范围 3.3.1 预定义标识符作用 首先,我们来看看位于最外层的宇宙隐式代码的标识符。这一区是 Go 语言预定义标识符的自留地。...不过,这些预定义标识符不是关键字,我们同样可以在内层代码中声明同名的标识符。 3.3.2 包代码作用 包顶层声明中的常量、类型、变量或函数(不包括方法)对应的标识符的作用是包代码。...四、避免变量遮蔽的原则 4.1 变量遮蔽的根本原因 变量是标识符的一种,通过以上我们知道,一个变量的作用起始于其声明所在的代码,并且可以一直扩展到嵌入到该代码中的所有内层代码,而正是这样的作用规则

38230

JavaScript的作用作用概念理解

说到这里我们需要理解两个概念:作用与函数作用。 函数作用 这个应该好理解,函数作用就是说定义在函数中的参数和变量在函数外部是不可见的。 大多数类C语言都拥有作用JS却没有。...可以看到,C语言拥有作用,因为j是在if的语句中定义的,因此,它在外是无法访问的。...作用 ---- 任何一对花括号中的语句集都属于一个,在这之中定义的所有变量在代码外都是不可见的,我们称之为作用。...也就是说,JS并不支持作用,它只支持函数作用,而且在一个函数中的任何位置定义的变量在该函数中的任何地方都是可见的。 那么我们该如何使JS拥有作用呢?...是否还记得,在一个函数中定义的变量,当这个函数调用完后,变量会被销毁,我们是否可以用这个特性来模拟出JS作用呢?

63120

JavaScript的作用作用概念理解

作用 作用永远都是任何一门编程语言中的重中之重,因为它控制着变量与参数的可见性与生命周期。说到这里我们需要理解两个概念:作用与函数作用。...函数作用 这个应该好理解,函数作用就是说定义在函数中的参数和变量在函数外部是不可见的。 大多数类C语言都拥有作用JS却没有。...作用 任何一对花括号中的语句集都属于一个,在这之中定义的所有变量在代码外都是不可见的,我们称之为作用。...也就是说,JS并不支持作用,它只支持函数作用,而且在一个函数中的任何位置定义的变量在该函数中的任何地方都是可见的。 那么我们该如何使JS拥有作用呢?...是否还记得,在一个函数中定义的变量,当这个函数调用完后,变量会被销毁,我们是否可以用这个特性来模拟出JS作用呢?

85750

javascript模仿作用

模仿作用 var somefunction=function(){ ///这里是作用 } somefunction(); 在这里定义了一个函数,然后立即调用。不会报错。...然而,下面的代码: function(){ //这里是作用 }(); //出错 这段代码会导致语法错误,因为javascript将function关键字当做一个函数声明的开始,而函数声明后不能跟圆括号...将函数声明转为函数表达式,像下面给它加上一对圆括号就可以了: (function(){ //这里是作用 })(); (function(){ var now = new Date(); if(now.getMonth...() ==0 && now.getDate() ==1){ alert("happy year"); } })(); 这段代码放到全局作用域中,确定那天是1月1日,显示新年快乐。...执行完毕,立即销毁作用链。

678100

JS进阶:作用作用

全局作用有个弊端:如果我们写了很多行 JS 代码,变量定义都没有用函数包括,那么它们就全部都在全局作用域中。这样就会 污染全局命名空间, 容易引起命名冲突。...因为放在里面的所有变量,都不会被外泄和暴露,不会污染到外面,不会对其他的库或者 JS 脚本造成影响。这是函数作用的一个体现。...作用在如下情况被创建: 在一个函数内部 在一个代码(由一对花括号包裹)内部 let 声明的语法与 var 的语法一致。...你基本上可以用 let 来代替 var 进行变量声明,但会将变量的作用限制在当前代码中。...作用有以下几个特点: 声明变量不会提升到代码顶部 let/const 声明并不会被提升到当前代码的顶部,因此你需要手动将 let/const 声明放置到顶部,以便让变量在整个代码内部可用。

2.5K20

了解 JS 作用作用

(1)作用 一个变量的作用(scope)是程序源代码中定义的这个变量的区域。 1....,就是说函数是一个作用的基本单位,js不像c/c++那样具有作用 比如 if  for 等 function test(){ for(var i=0;i<10;i++){ if(i=...JS中的声明提前 js中的函数作用是指在函数内声明的所有变量在函数体内始终是可见的。...引入一大段话来解释: 每一段js代码(全局代码或函数)都有一个与之关联的作用链(scope chain)。 这个作用链是一个对象列表或者链表,这组对象定义了这段代码中“作用域中”的变量。...作用链举例: 在js最顶层代码中(也就是不包括任何函数定义内的代码),作用链由一个全局对象组成。

2K10

JavaScript 函数作用作用不完全指北

我们在 JavaScript 词法作用不完全指北 中介绍了词法作用,词法作用是由你写代码时将变量和作用写在哪里来决定的,词法分析器处理代码时会保持作用不变。...所以我们在使用匿名函数表达式时应该着重考虑代码的可读性、可理解性。 作用 尽管函数作用是最常见的作用单元, 当然也是现行大多数 JavaScript 中最普遍的设计方法。...虽然这样,但是函数作用实现起来却不是最简洁的,甚至有点啰嗦。作用可以很好的解决这一点,实现维护起来更加优秀、 简洁的代码。...换句话说, let 通过 {} 即可创建新的作用,无需创建新的函数来创建新的作用。...const 关键字也遵循作用,可以使用它声明作用常量。有关 let 和 const 关键字的具体内容,将会在下篇文章中介绍。

60110

【深度剖析】JavaScript中作用与函数作用

面试官必问系列:深入理解JavaScript和函数作用 • 在 JavaScript 中,究竟是什么会生成一个新的作用,只有函数才会生成新的作用吗?...(这也就是变量提升) 3.4.1 with • 在词法作用域中介绍了 with 关键字,它不仅是一个难于理解的结构,同是也是一作用的一个例子(作用的一种形式),用 with 从对象中创建出的作用仅在...垃圾收集 • 另一个作用很有用的原因和闭包中的内存垃圾回收机制相关。...函数时 JavaScript 中最常见的作用单元。 2. 作用值的是变量和函数布局可以属于所处的作用,也可以属于某个代码(通常指 {...} 内部) 3....从 ES3 开始, try/catch 结构在 catch 分句中具有作用。 4. 从 ES6 引入了 let,const 关键字来创建作用

15710

js作用详解

atest其实是一个window对象下的方法对象 var 局部变量作用 var 声明一个对象,只作用当前作用以下。...变量作用覆盖问题 通过var 关键字我们知道,当声明一个变量时,该变量可以被当前作用,以及下层作用访问 当下层作用存在同名变量时,下层变量将覆盖上层变量:     var a=...同时,在子作用声明的方法,只能在当前作用或者下层作用调用 闭包函数,闭包作用 闭包函数,又称匿名函数,例如:     (function () {         var a...在闭包函数中声明的变量,只能在闭包函数内的作用,以及下层作用使用,可通过return 对象中,通过return对象中声明的方法进行返回,使得上级作用能成功访问到闭包作用的变量 return作用变量访问情况...2:js作用是往下通用的,下层作用可访问上层作用的变量,并可修改值 3:js下层作用变量和上层同名冲突时,下层作用将覆盖上层变量,但上层作用的访问不受影响 4:不适用var方法定义的变量,

2.5K10
领券