網站首頁 編程語言 正文
ES6新增聲明格式
let變量聲明及特性
let變量是ES6新增的申明格式,用于補齊ES5標準中var聲明變量的不足
1、let 聲明的變量不能重復聲明
使用ES6語法中的let
重復聲明一個變量就會報錯,這樣能防止變量污染
let a = "心猿";
let a = "意馬";
使用ES5語法中的var
重復聲明一個變量,則能正常輸出打印。
var a = "心猿";
var a = "意馬";
console.log(a);
2、let 聲明的變量只在塊級作用域有效
塊級作用域用{}
表示
在塊級作用域中使用let
申明的變量,在塊級作用域外,是無法訪問的
{
let a = 10
}
console.log(a)
在塊級作用域中使用var
申明的變量,在塊級作用域外,是可以訪問的
{
var = 10
}
console.log(a)
3、let不存在申明變量提升let
聲明的變量不會使變量提升,提前打印該變量會報錯
console.log(a)
let = 10
在JavaScript中用var
來聲明變量會出現變量提升的情況,即通過var
聲明的變量,系統都會把聲明隱式的升至頂部,提前打印會輸出undefined
console.log(a)
var = 10
4、let申明變量不會影響作用鏈
{
let name = "江流"
function fn(){
console.log(name);
}
fn()
}
const常量聲明及特性
使用
const
聲明的是常量,常量的值不能通過重新賦值來改變,并且不能重新聲明
1、const聲明的常量一定要賦初始值
const A = 10;
不賦初始值會報錯
const A;//不賦初始值會報錯
2、 const聲明的常量一般常量使用大寫(潛規則)
使用小寫也沒有關系。
const A = 10;
3、 const聲明的常量只在塊級作用域有效,在塊級作用域外,是無法訪問的
{
const A = 10;
}
console.log(A);
4、 對于數組和對象的元素修改,不算是對常量的修改
const ARR = ["江流","心猿","木龍","刀圭"];
ARR.push("意馬");
console.log(ARR);
變量解構賦值
Spread / Rest 操作符 :Spread / Rest 操作符指的是 ...
,具體是 Spread 還是 Rest 需要看上下文語境。
- 當被用于迭代器中時,它是一個 Spread 操作符:迭代器 (Iterator)是按照一定的順序對一個或多個容器中的元素行進遍歷的一種機制
function foo(x,y,z) {
console.log(x,y,z);
}
let arr = [1,2,3];
foo(...arr); // 1 2 3
- 當被用于函數傳參時,是一個 Rest 操作符:當被用于函數傳參時,是一個 Rest 操作符:
function foo(...args) {
console.log(args);
}
foo( 1, 2, 3, 4, 5); // [1, 2, 3, 4, 5]
- 在ES6中允許按照一定模式從數組和對象中提取值,對變量進行賦值,這稱為解構賦值
數組結構
- 一一對應關系的賦值
等號右邊的值會按照順序依次賦值給左邊的變量。
const ARR = ["江流", "心猿", "木龍", "刀圭"];
let [a, b, c, d] = ARR;
console.log(a, b, c, d);
- 非一一對應關系的賦值
let [a,b] = [10,20,30]
console.log(a,b); //輸出10,20
let [a,b,c] = [10,20]
console.log(a); //10
console.log(b); //20
console.log(c); //undefined
- 也可以通過
...
把特定的元素放在變量里
let [a,...arr] = [10,20,30]
console.log(a); //10
console.log(arr); //20,30
- 在ES6中可以通過解構賦值來互換變量
let a = 10;
let b = 20;
[a,b] = [b,a];
console.log(a,b)//20,10
對象的解構
- 對象解構的寫法與數組解構類似
let obj = {
name: '張三',
age: 20,
height: '178com'
}
let { name,age,height } = obj; //變量的名稱必須和對象的屬性名相同
console.log(name,age,height);
- 也可以解構多層對象
let person = {
name: '張三',
age: 20,
family: {
father: '張武',
mother: '李燕'
}
}
let { name,age,family: {father,mother }} = person
console.log(name,father)
- 在解構對象時也可以自定義變量名稱:
let obj = {
name: '張三',
age: 20
}
let { name:myname,age:myage } = obj;
console.log(myname,myage);
- 解構的默認值和參數的解構:
(1)不管是數組的解構賦值,還是對象的解構賦值都可以添加默認參數。如下:
let obj = {
name: '李四',
age: 20
}
let { name,age,height="178cm" } = obj;
console.log(height); //178cm
(2)在函數參數中使用解構,參數解構也可以給默認參數
function fun({name,age,height="178com"} = {}){
console.log(name,age); //張三,20
}
let obj = {
name: '張三',
age: 20
}
fun(obj)//張三 20
模板字符串
ES6引入新的聲明字符串的方式``
- 申明字符串
let str = `我是一個字符串`;
console.log(str);
- 內容中可以直接出現換行符
let str = `
<ul>
<li>第1天</li>
<li>第2天</li>
<li>第3天</li>
<li>第4天</li>
<li>第5天</li>
</ul>`;
console.log(str);
- 字符串的拼接,模板字符串通過反引號來表示
``
,如果要嵌入變量通過${ 變量名 }
來實現:
let str = "馬少爺";
console.log(`${str},你爸真有錢?。?!`);
原文鏈接:https://blog.csdn.net/weixin_45660621/article/details/121862844
相關推薦
- 2022-04-08 深入理解Golang的反射reflect示例_Golang
- 2022-12-23 Kotlin?select使用方法介紹_Android
- 2023-02-10 python自定義函數中的return和print使用及說明_python
- 2022-05-01 python保存圖片的四個常用方法_python
- 2022-08-04 Python?編程操作連載之字符串,列表,字典和集合處理_python
- 2022-04-20 C語言數據結構與算法之時間空間復雜度入門_C 語言
- 2022-06-12 GO語言中常見的排序算法使用示例_Golang
- 2022-10-23 Redis的過期鍵刪除策略原理說明_Redis
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支