ES6: 块级作用域
发表于|更新于|计算机基础
var
- 没有块级作用域的概念
- 会被提升到定义函数的顶部
- 可以重复声明
let
- 有块级作用域
- 不会被提升
- 禁止重复声明
const
- 有块级作用域
- 不会被提升
- 禁止重复声明
- 其值不可更改
- 必须进行初始化
文章作者: 三木
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 三木的技术博客!
相关推荐

2019-01-08
ES6: 模块编程
Javascript模块的限制 只能运行于严格模式 模块中的顶级作用域中的变量,不会被自动添加到全局作用域 顶级作用域的this为undefined 导出如果想让模块中的变量、函数、类被其他模块使用,需要将其导出,导出的方法如下: export var color = “red”; export function print_hello(){}; export { print_hello } export { print_hello as printh }; export default function print_hello(){}; export default print_hello export { print_hello as default} 导入如果想使用其他模块中的变量、函数、类,需要将其导入。导入后的变量、类、函数为只读。导入的方法如下: import { color, print_hello } from “./example.js”; import * as example from “./examp...

2018-09-18
ES6: 对象和数组解构
所谓解构,指的是将数据结构分解为更小的部分,从而使数据提取变得容易。 对象解构: 使用解构时,必须提供初始化值 let Person = { name: 'sen', age: 18 } let {name, age} = Person; 解构表达式的值为=右侧的值 如果对象中没有同名属性时,解构表达式新赋值的变量的值为undefined 解构对象只是赋值时,需要加() 赋值给不同名的变量 let Person = { name: 'sen', age: 18 } let {name: localName, age: localAge} = Person; 设置默认值 let Person = { name: 'sen', age: 18 } let {name, age: localAge = 18} = Person; 嵌套解构 let Person = { name:...

2018-09-18
ES6: 对象扩展
初始化简写: function createPerson(name, age) { return { name: name, age: age }; } ---> function createPerson(name, age) { return { name, age }; } 方法简写: var person = { name: "sen", sayName: function() { return this.name; } }---> var person = { name: "sen", sayName() { return this.name; } } 需要计算的属性名用[]表示 Object.is() 与===表现相同,除了 Object.is(NaN, NaN) // true Object.is(+0, -0) // false ...

2018-10-15
ES6: 符号类型
引入原因: 实现私有属性 let s = Symbol() let obj = {[s]: ‘hello world’}; console.log(obj.s); //undefined 符号值唯一 let s = Symbol() let m = Symbol() console.log(s === m) 创建: 不能用字面量形式创建 使用Symbol(desc)函数创建,不需要添加new Symbol.for(key)在全局符号注册表中查找key符号值,如果找到就返回,没找到就创建一个新的符号值 Symbol.keyFor(symbol): 返回符号值的key 枚举: 符号类型的key是不能被枚举的,Object.keys()以及Object.getOwnPropertyNames()都不能返回符号类型的key Object.getOwnPropertySymbols()则会返回对象中所有符号类型的key 共享符号值: Symbol.for(desc): 在全局符号注册表中查找描述为desc的符号,如果找到,返回这个符号值...

2018-12-07
ES6: 迭代器与生成器
什么是迭代器?迭代器是一个对象,它拥有一个next方法,调用next方法会返回一个对象,该对象有两个属性值,value和done。每次调用next方法,返回的value表示可迭代对象中的下一个值,done表示迭代是否完成。根据此定义,可用下面的代码实现一个迭代器: let create_iter = function(items) { let i = 0; return { next: function() { let value, done; if (i >= items.length) { value = null; done = true; } else { value = items\[i++\]; done = false; } ...

2019-01-03
ES6:数组
新增的静态方法Array.of() :可以将传入的参数逐个传入数组,即使只有一个数值类型的参数,也会成为新数组的成员,而不是代表数组的长度 Array.from():可以将类数组结构转化为数组,例如: Array.from(arguments). 利用Array.from()也可以转换原来的数组,例如: let trans_args = function() { let args = Array.from(arguments, (value)=>value + 1); console.log(args); } trans_args(1, 2, 3); $ node test.js [ 2, 3, 4 ] 新增的普通方法find() 与findIndex():传入一个回调函数来表明查找的条件,例如: > let arr = [1, 2, 3, 4, 5]; undefined > arr.find((n)=>n>3); 4 > arr.findIndex((n)=>n>3); 3 fill...
评论
公告
欢迎访问我的技术博客,如果您觉得我的文章对您有所帮助,欢迎打赏和分享!



