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

前端基础-JavaScript作用域与JS代码运行

第8章 作用域与JS代码运行 * 作用域:变量可以起作用范围和区域 8.1 全局变量和局部变量 * 全局变量与全局作用域 在任何地方都可以访问到变量就是全局变量,全局变量所在区域就是全局作用域...在 js 中词法作用域规则: 函数允许访问函数外数据. 整个代码结构中只有函数可以限定作用域....; 函数内部如果有变量,则优先使用内部变量,如果函数内部没有,才会使用函数外部变量; 8.5 作用域链 * 只有函数可以制造作用域结构, 那么只要是代码,就至少有一个作用域, 即全局作用域。...凡是代码中有函数,那么这个函数就构成另一个作用域。如果函数中还有函数,那么在这个作用域中就又可以诞生一个作用域。 将这样所有的作用域列出来,可以有一个结构: 函数内指向函数外链式结构。...代码局部作用域,函数外部是全局作用域,JS 代码运行分为与解析阶段和执行阶段,变量声明实在与解析阶段,所以变量存在提升,而变量只在自己作用域中起作用,但是自己作用域是可以访问上级作用

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

js作用

前言 相信自从es6出来之后,你一定多少知道或者已经在项目中实践了部分块级作用域,在函数或者类内部命名变量已经在使用let了,但是你知道它真正作用是什么吗?...又是因为什么我们要用这个块级作用域,本文与你一起探讨块级作用场景以及所有细节问题。...es6之前作用域 特点1 :js只有函数级作用域以及全局两种 特点2 :不通过var声明变量直接赋值也可以用并且可以访问,原理是直接赋值到了window对象属性变量下,两者如果同时定义,那么会覆盖使用...块级作用域 场景一 循环中块级作用域 如果我们有一个遍历循环绑定事件,并且需要把当前指针绑定到对应方法中。...参考文档 前端技术文档-兵哥技术集锦,es6入门 let-mdn文档 变量提升-菜鸟教程 学习js闭包-阮一峰博客

3.2K20

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...,让我们来分析一下这段代码预解析过程 1)首先定义了一个全局变量a 2)定义了function f1 3)执行f1方法 ​ 3-1)定义了f1方法体内部局部变量a,a值为undefined ​ 3...-2)输出局部变量a,因为a未赋值,所以这个地方输出undefined ​ 3-3)给局部变量a赋值为3 4)输出全局变量a,a值为1 这就是上面这段代码预解析过程,只要把这段代码预解析搞明白了,

9210

JS-cookie封装

oDate.setDate(oDate.getDate()+iDay);//设置延期日 document.cookie = name+'='+value+';expires='+oDate;//到这里oDate...是延期后时间毫秒数 setCookie('xxx','www',3)//调用传参,前俩参数记得加‘单引号’ getCookie()中: getCookie:传一个参数,就是要查找记录name值,讲现有的...cookie字符串进行切割扔个arr,此时arr就是{name=1,name2=2,name3=3...}一个object,就像一个json,此时,再遍历,将arr每一个元素分别提取出来然后通过等号切割...,扔个arr2,这样,arr2就成了俩值得数组,遍历一遍,就被扔进来一对,把扔进来这对进行判断,如果他名字等于传进来要查找参数值,那么arr2内部第2个数值就是要找名字对应值,把他弹出来。...否则,遍历完了还没有,就弹回空或者其他“没找到”等提示语。 removeCookie()中: 有效期时间设置为-1,让计算机以为这条数据是昨天过期,自己删除本条数据。 ?这里第二个参数为什么是1

8.2K51

JS作用域和作用域链

JS作用域就是在一定空间范围内对数据进行读写操作。 在JS中一个变量作用域(scope)是程序中定义这个变量区域。 变量有全局变量和局部变量两种。...全局变量作用域是全局性,即在JavaScript代码中,该全局变量处处都有定义。...在这个阶段,作用域链会被初始化,this值也会被最终确定。在执行阶段,代码被解释执行。...此外还要讲下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作用域链起始位置,即函数aAO和GO。

3.5K10

JS中匿名函数作用

- 匿名函数主要利用函数内变量作用域,避免产生全局变量,影响整体页面环境,增加代码兼容性。(如下图) ? 那么 他作用是什么?...我们首先假设一个场景,一个网站使用了jQuery框架进行了许多DOM操作,然而,在“有心人”操作之下,能够将整个jQuery'$'函数变成其他功能,例如: 在控制台中输入: $=null...,当然,除了jQuery也有其他框架也可能需要有这样匿名函数来保护页面。...只要使用得当,自然能够避免这些不必要麻烦。...---- 个人看法:这个匿名函数也有些类似于ES6中let方法,所声明内容能够有效避免全局变量产生,所以即使在控制台中,也不能够随意改变该页面的内容,我想 let方法出现可能就是为了补充前面的不足吧

2.9K20

js作用域详解

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

2.5K10

原生JS | 作用

一个变量在其作用域内是可以被访问,在作用域外不能被访问。 全局作用域与局部作用域 变量执行环境有两种:一种是全局,另一种是局部(如:放在函数里面)。...当有多层作用域时,深层作用域中查找变量时,会按照“当前作用域”到“上层作用域”再到“全局作用域”顺序进行查找,这个查找顺序就可以理解为作用域链。...也就是“案例1”代码中 user与window.user是等价。...查看如下与案例等价代码,更有利于理解案例~ var user = 'HTML5学堂'; function changeName(user){ var user = user; user...= '码匠'; } changeName(user); console.log(user); 如果觉得如上代码还不容易理解,我们可以尝试更换形参名字,会更容易理解一些~如下代码与案例4代码也是等价

4.7K50

JS进阶:作用域和作用域链

作用域(Scope) 1.什么是作用作用域是在运行时代码某些特定部分中变量,函数和对象可访问性。换句话说,作用域决定了代码区块中变量和其他资源可见性。...全局作用域有个弊端:如果我们写了很多行 JS 代码,变量定义都没有用函数包括,那么它们就全部都在全局作用域中。这样就会 污染全局命名空间, 容易引起命名冲突。...因为放在里面的所有变量,都不会被外泄和暴露,不会污染到外面,不会对其他库或者 JS 脚本造成影响。这是函数作用一个体现。...函数作用域,是指声明在函数内部变量,和全局作用域相反,局部作用域一般只在固定代码片段内可访问到,最常见例如函数内部。...); // logs 'Hammad' JS 初学者经常需要花点时间才能习惯变量提升,而如果不理解这种特有行为,就可能导致 bug 。

2.6K20

了解 JS 作用域与作用域链

(1)作用域 一个变量作用域(scope)是程序源代码中定义这个变量区域。 1....JS声明提前 js函数作用域是指在函数内声明所有变量在函数体内始终是可见。...引入一大段话来解释: 每一段js代码(全局代码或函数)都有一个与之关联作用域链(scope chain)。 这个作用域链是一个对象列表或者链表,这组对象定义了这段代码中“作用域中”变量。...作用域链举例: 在js最顶层代码中(也就是不包括任何函数定义内代码),作用域链由一个全局对象组成。...内部函数在每次定义时候都要微妙差别---在每次调用外部函数时,内部函数代码都是相同,而且关联这段代码作用域链也不相同。

2K10

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券