ES6中變數的宣告與解析

2021-08-29 00:24:57 字數 2794 閱讀 1852

目錄

變數的宣告

var命令

let和const命令

變數的解構賦值

陣列的解構賦值

物件的解構賦值

字串的解構賦值 

數值、boolean的解構賦值

1.可以重複宣告

var a=10;

var a=12;

console.log(a); //12

2. 變數可以提公升

console.log(a); //undefined

var a=10;

3. 沒有塊級作用域

for(var i=0;i<10;i++)

console.log('外部i',i); //10

1.不能在相同作用域內重複宣告變數

let a=10;

let a=12;

console.log(a) //報錯

//報錯

if(true)

2.變數不可以提公升

console.log(a); //referenceerror

var a=10;

3.有塊級作用域

for(let i=0;i<10;i++)

console.log('外部i',i); //undefined

4.存在暫時性死區

如果區塊中存在let和const命令,則這個區塊對這些命令的宣告的變數從一開始就形成封閉作用域。只要在宣告之前使用這些變數,就會報錯。

if(true)
const命令

1.const命令用來宣告常量。一旦宣告,其值就能改變。這就意味著用cost宣告的常量必須要初始化。

const pi=3.14;

pi=3;// typeerror:"pi" is read.only

const a; //syntaxerror

2.const宣告的常量只在當前**塊有效。如果要跨模組則採用 模組暴露的方式。

// test1.js

export const a=2;

import * as constants from './constants';

console.log(constants.a);

let arr=['terry','tom','larry'];

let a=arr[0];

let b=arr[1];

let c=arr[2];

//等價於下面這種

let [a,b,c]=arr;

let [head,...tail]=[1,2,3,4]; // head=1;tail=[2,3,4]

預設值

//預設值

let [a,b,c,d="dd"]=[1,2,3];

console.log(a) //1

console.log(d); //'dd'

案例:交換兩個變數的值

//交換兩個變數的值

let a=1;

let b=2;

[a,b]=[b,a];

物件的解構是先找到同名屬性,然後再賦值給對應的變數。 

var obj=

let =obj;

console.log(a) //"cc";

conoole.log(b) //12

//可以簡寫如下形式===>

let =obj;

console.log(name); //"cc"

指定預設值

預設值生效條件是物件的屬性值全等於undefined

var ={};

x //3

var =;

x //1

y //5

var =

x //3

var =

x //null

1. 可以將字串轉換成乙個類似陣列的物件

let [a,b]="hello";

console.log(a) //'h';

//===>

let [c,d]=['h','e','l','l','o'];

2. 使用string原型中的方法進行解構

let s1="hello";

let =s1;

substring.call(s1,0,2); // 'he'

解析值的時候,如果等號右邊是數值或布林值,則會先轉換為物件。

let =123;

s===number.prototype.tostring //true

let =true;

s===boolean.prototype.tostring //true

Es6之變數宣告

es6變數宣告let 和 canst,let 所宣告的變數具有塊級作用域,且宣告的變數不會前置,而const宣告的是不變了常量 let test test let 所宣告的變數只在塊級作用域內有效,而var就不同 for var i 1 i 5 i console.log str 輸出hello.c...

ES6 變數宣告方式

var,function,let,const,import,class1.let只在所在的 塊中有效 2.以前我們需要用iife解決的問題 3.不存在變數宣告提公升 4.暫時性死區tdz 1.let只在所在的 塊中有效 2.以前我們需要用iife解決的問題 3.不存在變數宣告提公升 console....

ES6的變數宣告方式

保留了var和function。新增加了let const class和import。而且,let const class宣告的全域性變數再也不會和全域性物件的屬性掛鉤了。let 1 let只在所在的 塊中有效 for var i 0 i 10 i console.log i 10 for let ...