文章目录

  • ES6基础2(块级作用域、数组对象解构)-学习笔记
    • 块级作用域
    • 数组解构
    • 对象解构
    • 字符串解构
    • 函数的参数解构

ES6基础2(块级作用域、数组对象解构)-学习笔记

块级作用域

 //let const  块级作用域  var 函数作用域var a = 100;if(true) {var a = 1000;  //块级作用域};var a = 100;function f(){console.log(a);if(true){let a = 1000;}console.log(a);};//循环  i成为全局变量for(var i=0; i<5; i++){};console.log(i);  //结果  5for(let i=0; i<5; i++){};console.log(i);   //i is not defined//小实例var arr = [];for(let i=0; i<5; i++){arr[i] = function(){console.log(i)}};arr[4]();   //var 结果 5   let 结果 4//暂时性死区var x = 1;function f(){if(true){x = 100;console.log(x);let x;  //只要在同一个作用域下 不能声明同样的名称}};f(); //报错function f(i){let i;   //error    只要在同一个作用域下 不能声明同样的名称//console.log(i)if(true){let i = 100;  //OK}};f(10)let x = y,y = 1;function f(){console.log(x,y)};f(); //报错

数组解构

     //解构 从数组和对象中提取值,对变量进行赋值,这被称为解构。//ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构。let [a,b,c] = [1,2,3];//es5var a = 1;var b = 2;var c = 3;//简写var a = 1,b = 2,c = 3;// ES6  数组解构let [a,b,c] = [1,2,3];   //模式匹配 只要两边模式相同,左边的变量 右边对应要赋的值//对象解构let {x,y,z} = {x:1,y:2,z:3};//es5var obj = {x:1,y:2,z:3};x = obj.x;y = obj.y;z = obj.z;//1)var [a,b,x] = ['b','a',[1,2]];//左边是变量  = 右边对应要赋的值var arr2 = ['red',{id:2},123];let [x,y,z] = arr2;console.log(y) //不是一一对应var [x,y,z] = [1,2];console.log(z);//var x = 1,y = 2,z;//默认值  备胎var arr3 = [10,20];var [x=1,y=2] = arr3;//es5//  if(arr3[0]){//      x = arr3[0];//  }else {//      x = 1;//  };//三目运算// arr3[0] ? x = arr3[0]:x = 1;//简写// x = arr3[0] || 1;// y = arr3[1] || 2;//DEMOvar [x =1,y=2] = ['x','y'];console.log(x);//默认值发挥作用var [x =1,y=2] = ['x'];console.log(y);var [x=1,y=2] =[]; //x,y   1 2var [x,y='y'] = ['x',0]  //x,y      'x' 0var [x=1,y] = [10]; //x,y    10  undefinedvar [x=1,y=2] = [10,null]   // 10  nullvar [x,y=2] = [10,undefined]  //10  2//重要  成员等于undefined 默认值会生效var [x=1] = [undefined];var [x,y=2] = [10,undefined]//如果默认值是一个表达式 ,表达式是默认值 这个惰性求值  只要用到它的时候才会调用,默认值不会优化处理function f(){return 100;};var [x=f()] = [10];  //10var [x=f()] = [undefined];  //100

对象解构

 //对象解构 匹配不是按次序,由变量名来决定var {x,y} = {y:'x',x:'y'};   //JSONvar obj ={name:'abc',age:18,id:1,friends:['a','x','u'],flag:{x:1,y:2}};var {name,age,id,friends,flag} = obj;//没有匹配成功  undefinedvar {x,y,z} = {y:'x',x:'y'};  //别名  x:a  x是匹配模式  a才是变量var {x:a,y} = {x:1,y:2};//var a = obj.x;var {x:name,y:id} = {x:1,y:2};//默认值var {x=3} = {x:10};var {x,y:a=5} = {x:10};//默认值生效的条件  undefinedvar {x:a=10} ={x:undefined};var {x:a=10} ={};//demovar {x=3} ={};var {x,y=5} = {x:1};var {x:a=10,y=20} = {y:10};var {message:msg="hello world"} ={};var {x:a=10} ={x:null};var obj ={name:'abc',age:18,id:1,friends:['a','x','u'],flag:{x:1,y:2}};var {name,age,id,friends:f,flag:fl} = obj;f[0];

字符串解构

//字符串解构
var [a,b,c,d,e] = 'hello';

函数的参数解构

 //函数的参数解构function fun(x,y){    //x,y 变量  参数才是值var x = x || 0;var y = y || 0;return x+y;};fun();//没有参数function fun([x=0,y=0]){   //  [x=0,y=0] = []return x+y;};fun([]); //0//有参数function fun([x=0,y=0]){  //[x=0,y=0] = [1,2]return x+y;};fun([1,2]); //3//参数为空function fun([x=0,y=0]){  //[x=0,y=0] = [,2]return x+y;};fun([,2]); //2//对象function fun({x=0,y=0}){   //   {x=0,y=0} = {}return x+y;};fun({x:10,y:10});function fun({x=0,y=0}){   //   {x=0,y=0} = {}return x+y;};fun({y:10});//函数参数解构也有默认值//1)demofunction fun({x=0,y=0}={}){      //{x=0,y=0} ?{x:10,y:8}:{}return [x,y];};fun({x:10,y:8});  // [10,8]fun({x:3});  // [3,0]fun({});   // [0,0]fun();    // [0,0]//2)demofunction fun({x,y}={x:0,y:0}){    //{x,y}?{x:10,y:8}:{x:0,y:0}return [x,y];   };fun({x:10,y:8});  // [10,8]fun({x:3});  // {x,y} = {x:3} [3,undefined]fun({});   // {x,y} = {}  [undefined, undefined]fun();    // {x,y}={x:0,y:0}   [0,0]

ES6基础2(块级作用域、数组对象解构)-学习笔记相关推荐

  1. 搭建Babel运行环境,Traceur ES6模板,块级作用域,let和const命令

    搭建Babel运行环境 Babel(http://babeljs.io/)可用于将使用ES6语法的脚本转化为ES5语法的脚本,基本功能的安装步骤如下: 1.安装node解释器和npm包管理工具 2.安 ...

  2. es6中的块级作用域

    块级作用域 凡是带{}都是块级作用域,if(){} for(){} 对象{} 1.在块级作用域下,var 和function跟在window下一样, function有个特殊的一点,在块级作用域下会提 ...

  3. ES6规范前后块级作用域与函数声明的缠缠绵绵

    今天我们就以上面的这个例子来说一下,块级作用域与函数声明在ES6前后的纠葛,当然在ES6之前是没有块级作用域的,但为了与ES6统一,使文章更简明,所以把这对'{}'统一称为块级作用域. 开正题之前,还 ...

  4. ES6基础语法(let、const、解构赋值、模板字符串、简化对象、箭头函数、扩展运算符)(一)

    系列文章目录 第二章:ES6深入(Symbol.类.迭代器.Set.Map)(二) 第三章:ES6深入(生成器.Promise.async/await)(三) 第四章:ES6+新增API拓展(对象AP ...

  5. ES6(一)——字面量的增强、解构、let/const、块级作用域、暂时性死区

    一.字面量的增强 ES6中对 对象字面量 进行了增强,称之为 Enhanced object literals(增强对象字面量). 字面量的增强主要包括下面几部分: 属性的简写:Property Sh ...

  6. es6 ie不兼容 函数_ES6:什么是块级作用域?

    在 ES5 只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景. 我们先来看一下下面这种情况:内层变量可能会覆盖外层变量. var txt = '外层变量-->你好呀';func ...

  7. ES6 块级作用域详解

    什么是块级作用域 ES6 中新增了块级作用域.块作用域由 { } 包括,if 语句和 for 语句里面的 { } 也属于块作用域. 为什么需要块级作用域 第一种场景:内部变量会覆盖外部变量 var t ...

  8. java区块作用域_ES6-let、const和块级作用域

    1.介绍 总的来说,ES6是在ES2015的基础上改变了一些书写方式,开放了更多API,这样做的目的最终还是为了贴合实际开发的需要.如果说一门编程语言的诞生是天才的构思和实现,那它的发展无疑就是不断填 ...

  9. let、const和var的区别(涉及块级作用域)

    let .const和var的区别 let.const.var在js中都是用于声明变量的,在没有进行ES6的学习前,我基本只会使用到var关键字进行变量的声明,但在了解了ES6之后就涉及到了块级作用域 ...

最新文章

  1. 现金奖励+实习offer!数据库大赛来了
  2. ECCV2020超快车道线检测算法:Ultra Fast Structure-aware Deep Lane Detection
  3. 以咨询顾问为我终生职业(转)
  4. viewsource和viewparsed_Network Panel说明
  5. 高级精致智能快捷的Web设计原则案例
  6. discuz! 7.2 manyou插件暴路径Get Webshell 0day
  7. span组件内容的刷新(笔记)
  8. [导入]一个好网站的策划设计
  9. getvalue函数怎么使用_单片机基础 —— 使用ADC读取电压值
  10. 携号转网不会有多大影响
  11. SQL Injection***技术总汇(ASP+SQL Server版)v1.0
  12. Android零散技术点
  13. 软件项目管理案例教程 第4版 习题答案(测试题)
  14. AIDL的简单使用和注意事项
  15. 计算机 桌面 休眠,电脑自动休眠在哪设置的_教你让电脑自动休眠状态的方法-系统城...
  16. framemaker中遍历及判断其属性是否存在
  17. 哀其不幸,怒其不争!
  18. 2018最新Nginx从入门到精通5阶段视频教程附代码(Http代理+负载均衡+静动分离)
  19. Github项目(克隆,上传)简单git命令流程使用记录
  20. 【渝粤题库】国家开放大学2021春2408中国当代文学题目

热门文章

  1. 操作系统(4) -- 文件管理
  2. HipHop算法:利用微博互动关系挖掘社交圈
  3. java aws s3_java操作AWS S3一些坑记录
  4. linux该专接本还是工作_是该专接本还是直接工作?学历和经验哪个重要?
  5. nc 探测端口_防盗报警探测器的几种防拆接线方式,附接线图
  6. html5 canvas图文编辑器源码_5个微信编辑器,再也不用为公众号发愁啦
  7. 没有互联网,我不会写程序了
  8. html正则表达式的书写,前端正则表达式书写及常用的方法
  9. 依赖注入的三种方式_一起学Spring之三种注入方式及集合类型注入
  10. python怎么创建列表_用Python将一个列表分割成小列表的实例讲解 Python 如何创建一个带小数的列表...