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

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...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表达式值为

    11310

    js数组操作

    unshift:将参数添加到原数组开头,并返回数组长度 。 这组方法和上面的push()和pop()方法正好对应,一个是操作数组开头,一个是操作数组结尾。...) 从上面测试结果可以发现:传入不是数组,则直接把参数添加到数组后面,如果传入数组,则将数组各个项添加到数组中。...2、数组元素访问 var testGetArrValue=arrayObj[1]; //获取数组元素值 arrayObj[1]= "这是新值"; //给数组元素赋予新值 3、数组元素添加 代码...[,itemN]]]]); //将多个数组(也可以是字符串,或者是数组和字符串混合)连接为一个数组,返回连接好数组 6、数组拷贝 arrayObj.slice(0); //返回数组拷贝数组...,注意是一个新数组,不是指向 arrayObj.concat(); //返回数组拷贝数组,注意是一个新数组,不是指向 7、数组元素排序 arrayObj.reverse(); //反转元素(最前排到最后

    2.8K00

    JS作用域和作用域链

    JS作用域就是在一定空间范围内对数据进行读写操作。 在JS中一个变量作用域(scope)是程序中定义这个变量区域。 变量有全局变量和局部变量两种。...在创建阶段,解析器首先会创建一个变量对象(variable object,也称为活动对象 activation object),它由定义在执行环境中变量、函数声明、和参数组成。...此外还要讲下JS作用域中块级作用域。 JS中是没有块级作用域这个概念。 什么是块级作用域呢?...JS并不支持块级作用域,它只支持函数作用域,而且在一个函数中任何位置定义变量在该函数中任何地方都是可见。 那么JS又该怎么拥有块级作用域呢?...根据“在一个函数中定义变量,当这个函数调用完之后,变量会被销毁”特性,来模拟出JS块级作用域。

    4.1K30

    解构赋值作用_数组解构赋值

    文章目录 概念 数组解构 声明分别赋值 解构默认值 交换变量值 解构函数返回数组 忽略返回值(或跳过某一项) 赋值数组剩余值给一个变量 嵌套数组解构 字符串解构 对象解构 基础对象解构...数组解构是非常简单简洁,在赋值表达式左侧使用数组字面量,数组字面量中每个变量名称映射为解构数组相同索引项 这是什么意思呢,就是如下面这个示例一样,左边数组项分别得到了右侧解构数组相应索引值...(b); // 1 解构函数返回数组 我们可以直接解构一个返回值为数组函数 function c() { return [10, 20]; } let a, b; [a, b] =...(a); // 1 console.log(b); // [2, 3] 这样的话b也会变成一个数组了,数组项是剩余所有项 注意: 这里要小心结尾是不能再写逗号,如果多了一个逗号将会报错 let...; 上面的代码交换x和y值,这样写法不仅简洁而且易读,语义清晰 从函数返回多个值 函数只能返回一个值,如果要返回多个值,我们只能将这些值放置数组或对象里返回,当我们有了解构赋值后,从对象或数组里取出这些值犹如探囊取物

    3.8K20

    JS基础——作用域、作用域链

    作用域 [[scope]],函数定义时自动生成一个隐式属性,是用来存储函数作用域链 Scope Chain容器。作用域链是用来存储函数执行上下文 AO和全局执行上下文 GO容器。...函数被定义时,系统会为函数生成[[scope]],[[scope]]中保存该函数作用域链,并从该作用域链起始位置开始存储当前环境作用域链。...函数被定义后&将要执行前会生成函数本身AO,并将其插入作用域链起始位置。...,并将GO插入到作用域链起始位置。...函数a被执行时,此时函数b也被定义,函数b[[scope]]也在此时生成,其中存储函数b作用域链,并将当前环境作用域链插入函数b作用域链起始位置,即函数aAO和GO。

    3.5K10

    JS中匿名函数作用

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

    2.9K20

    原生JS | 作用

    HTML5学堂-码匠:作用域那些必须掌握知识,还有大量作用域案例练习与分析,快快进来! 作用基础知识 在JavaScript中,每个变量会有一个有效区域(范围),这个就是作用域。...一个变量在其作用域内是可以被访问,在作用域外不能被访问。 全局作用域与局部作用域 变量执行环境有两种:一种是全局,另一种是局部(如:放在函数里面)。...变量查找方式 & 作用域链 变量查找方式 当局部作用域当中出现属性时候,首先查找当前作用域当中是否具有存储空间,如果有,直接采用;如果没有,向其父级查找,如果父级没有,继续向上,直到查找到window...当有多层作用域时,深层作用域中查找变量时,会按照“当前作用域”到“上层作用域”再到“全局作用域”顺序进行查找,这个查找顺序就可以理解为作用域链。...var进行变量声明,此时在函数这个局部作用域当中,并没有user这个存储空间,之后按照“作用域链”向上翻找,也就是在全局(window)作用域当中进行查找。

    4.8K50

    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

    javascript数组怎么定义_js数组

    初识数组:新建一个数组 每一门编程语言,都有数组或类似数组结构,同样JavaScript(虽然是脚本语言)也不例外,学习JavaScript数组,我们从新建第一个数组开始: var arr = [...新建数组对象方式创建数组,并指定长度,但由于长度可变,因此实际作用不大 var arr3 = new Array(5); // 4....认识数组数组基本方法 学会了新建数组和访问数组元素,我们开始了解一些数组基本方法: push()方法 push(参数1,参数2,参数3…,参数n) 方法可把参数指定元素依次添加到数组末尾,...) 方法用于创建一个新数组,其中元素是指定数组中所有符合指定函数要求元素,传参是我们规定返回要求对应函数。...()方法: map() 方法用于创建一个新数组,其中每个元素是指定数组对应元素调用指定函数处理后值。

    3.1K40

    js数组splice方法_js数组删除某一项

    整数,规定从何处添加/删除元素,是开始插入/删除数组元素下标 howmany 必需。整数,规定删除多少个元素。如果设置为 0,则不会删除元素 item1, …, itemX 可选。...res); //返回被删除元素:["c"] console.log(arr); //修改后数组:["a", "b", "d"] //指定位置删除指定个数(0个) var arr = ['a','b...','c','d']; var res = arr.splice(2,0); console.log(res); //返回被删除元素:[] console.log(arr); //修改后数组:["a...:["c"] console.log(arr); //修改后数组:["a", "b", "插入", "d"] 2、delete:用于删除对象某个属性,或删除数组某一项 (详细说明:https://...,或计算结果为对象表达式(数组) porperty / index 要删除属性(下标) 例: //删除对象某个属性 let obj = { name:'alax', age:18

    3.1K20

    html js 数组添加,js数组添加数据

    大家好,又见面了,我是你们朋友全栈君。 我们在学习python过程中,会对列表、字符串添加数据。在Javascript中,我们也会对数组添加数据。在不同位置添加数据有着不同方法。...本文介绍js数组添加数据三种方法:1、结尾添加push()方法;2、头部添加unshift() 方法;3、向/从数组指定位置添加/删除项目,然后返回被删除项目splice() 方法。...要添加到数组第一个元素。 b:可选。要添加到数组第二个元素。 c:可选。可添加多个元素。 3、返回值 把指定值添加到数组新长度。...向数组添加第一个元素。 b:可选。向数组添加第二个元素。 c:可选。可添加若干个元素。 3、返回值 arrayObject 新长度。...tony alert(arr.splice(1,0,’tony’)) //返回值为空 alert(arr) // smile,tony,2,3,marie 以上就是js数组添加数据四种方法,大家可以根据在不同位置添加数据选择不同方法哦

    26.1K10

    JS数组常用方法

    JS 数组常用方法(个人感觉) 1. forEach() 循环,无法在中间停止 2. some() 循环,找到符合条件之后,可以通过 return true 退出循环 3. every() 测试数组所有元素是否都能通过某个指定函数测试...2, , 3]; // 如果数组是稀疏,缺失元素不会调用函数,但是返回数组也会和原始数组一样稀疏 let newA = a.map((v) => v * v); console.log(newA)...2)); console.log(a.find((v) => v < 0)); // 找不到符合条件,返回undefined 8. flat() 用于打平数组(把嵌套数组变为普通数组元素) let...; // push()在数组末尾添加元素,并返回数组新长度 console.log(a); console.log(a.pop()); // pop()删除数组末尾元素,并返回删除元素 console.log...console.log(a.splice(2, 3, "Hello", "Hi")); // splice()第一个参数是起点,第二个参数是要删除元素个数,之后参数是要插入元素,返回删除数组

    4.2K20

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券