什么是闭包MDN 对闭包的定义为:闭包是指形成能够访问自由变量的函数什么是自由变量?自由变量是指在函数中使用的,但既不是函数参数也不是函数的局部变量的变量。由此,我们可以看出闭包共有两部分组成:有一个函数 + 这个函数能够访问自由变量例子: var a = 1; function foo() { console.log(a); } foo();foo 函数可以访问变量a,但是 a...
作用域作用域规定了如何查找变量,也就是确定当前执行代码对变量的访问权限。ECMAScript6之前只有全局作用域和函数作用域。JavaScript采用词法作用域(lexical scoping),也就是静态作用域。静态作用域与动态作用域因为采用词法作用域,函数的作用域在函数定义的时候就决定了。与词法作用域相对的是动态作用域,函数的作用域在函数调用的时候才决定。让我们认真看个例子就能明白之间的...
让我们一起来拆解一下 Object 相关联的属性、方法和 ES6 后新 Api 吧:属性类型JavaScript 中有两种数据类型: 数据属性和访问器属性数据属性数据属性有以下几个描述行为的属性:Configurable 描述这个属性是否可被 delete 删除, 默认为 trueEnumerable 描述这个属性是否可被枚举, 默认为 truewritable 描述这个属性是否可被修改, ...
简述正则出现的频率并不高, 出现时却有尚方宝剑的效果, 能一招见效, 达成目的, 是我们拿来精准匹配、替换文本的利器.正则表达式的实现最早来自 Unix 系统, 并不是 JS 一家独有, 而是一套通用语法, 各家实现略有不同.虽说目前 JS 技术发展迅速, 但很多部分都是借鉴其他语言的特性和框架发展而来的.很多人对正则头痛, 常常写匹配时忘记语法如何写了, 我也经常这样. 掌握语法并不难, ...
浅复制浅拷贝是指复制对象的时候,指对第一层键值对进行独立的复制。一个简单的实现如下:// 浅复制实现 function shadowCopy(target, source){ if( !source || typeof source !== 'object'){ return; } if( !target || typeof target !== '...
全局作用域预解析时,如果变量与函数名相同,以函数为准变量有赋值时,以变量为准全局作用域变量名和函数名冲突 // 全局作用域变量名和函数名冲突 // 1 var a1=123; console.log(typeof a1); // number function a1() {} // 2 console.log(typeof a2); //...
声明 : 此篇为转载内容 , 想详细学习 ES6 语法, 可以去拜读下阮一峰写的 ECMAScript 6 入门 ( 第二版 ) ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准。因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015。也就是说,ES6就是ES2015。虽然目前并不是所有浏览器都能兼容ES6全部特性,但越来越多的程序员...