1 let 和 const
作用域: 隻在聲明指令的塊級作用域内有效。
① let所聲明的變量可以改變,值和類型都可以改變,沒有限制。
let a = 123
a = 456 // 正确,可以改變
let b = [123]
b = [456] // 正确,可以改變
② const聲明的變量不可改變值,這意味着const一旦聲明變量必須立即初始化,不能以後指派。
const a ;//報錯,一旦聲明變量,應該立即指派!!
const b = 2;
b = 3//報錯,因為定義常量之後不能成重新指派!!
對于複合類型的變量,如數組和對象,變量名不指向資料,而是指向資料所在的位址。const指令隻是保證變量名指向的位址不變,并不保證該位址的資料不變,是以将一個對象聲明為常量必須非常小心
const names = [];
names = [1,2,3] //出錯,因為變量names指向的位址不能發生改變,應始終指向[]所在的位址!!![1,2,3]與[]不是同一個位址
const names = [];
names = [1,2,3] //出錯,因為變量names指向的位址不能發生改變,應始終指向[]所在的位址!!![1,2,3]與[]不是同一個位址
//不會報錯,因為names指向的位址不變,改變的隻是内部資料
const names = [];
names[0] = 1
names[1] = 2
names[2] = 3
2 數組
一次性聲明多個變量:
let [a, b, c] = [1, 2, 3];
console.log(a) // 1
console.log(b) // 2
console.log(c) // 3
3 對象的合并:
Object.assign()方法用于對象的合并,将原對象(source)的所有可枚舉屬性複制到目标對象(target)
const target = { a: 1 };
const source1 = { b: 2 };
const source2 = { c: 3 };
Object.assign(target, source1, source2);
target // {a:1, b:2, c:3}
Object.assign方法的第一個參數是目标對象,後面的參數都是源對象。
注意,如果目标對象與源對象有同名屬性,或多個源對象有同名屬性,則後面的屬性會覆寫前面的屬性。
const target = { a: 1, b: 1 };
const source1 = { b: 2, c: 2 };
const source2 = { c: 3 };
Object.assign(target, source1, source2);
target // {a:1, b:2, c:3}
Object.assign 方法實行的是淺拷貝,而不是深拷貝。
const obj1 = {a: {b: 1}};
const obj2 = Object.assign({}, obj1);
obj1.a.b = 2;
obj2.a.b // 2
4 Promise對象
Promise 是異步程式設計的一種解決方案。
5 import 和 export
import 導入子產品、export 導出子產品
// example2.js // 導出預設, 有且隻有一個預設
export default const example2 = {
name : 'my name',
age : 'my age',
getName = function(){ return 'my name' }
}
//全部導入 // 名字可以修改
import people from './example2.js'
-------------------我是一條華麗的分界線---------------------------
// example1.js // 部分導出
export let name = 'my name'
export let age = 'my age'
export let getName = function(){ return 'my name'}
// 導入部分 // 名字必須和 定義的名字一樣。
import {name, age} from './example1.js'
//有一種特殊情況,即允許你将整個子產品當作單一對象進行導入
//該子產品的所有導出都會作為對象的屬性存在
import * as example from "./example1.js"
console.log(example.name)
console.log(example.age)
console.log(example.getName())
-------------------我是一條華麗的分界線---------------------------
// example3.js // 有導出預設, 有且隻有一個預設,// 又有部分導出
export default const example3 = {
birthday : '2018 09 20'
}
export let name = 'my name'
export let age = 'my age'
export let getName = function(){ return 'my name'}
// 導入預設與部分
import example3, {name, age} from './example1.js'
來源:https://segmentfault.com/a/1190000017471239