ES6新增const誤區
我們使用const宣告常量時,總認為值一旦宣告就不可改變,然後我發現在定義物件時,物件的值是可以改變的;
對於數值:
var message = "Hello!";
let age = 25;
// 以下兩行都會報錯
const message = "Goodbye!";
const age = 30;
對於物件
const foo = {};
// 為 foo 新增一個屬性,可以成功
foo.prop = 123;
foo.prop // 123
// 將 foo 指向另一個物件,就會報錯
foo = {}; // TypeError: "foo" is read-only
查閱相關資料得知
const
實際上保證的,並不是變數的值不得改動,而是變數指向的那個記憶體地址不得改動。對於簡單型別的資料(數值、字串、布林值),值就儲存在變數指向的那個記憶體地址,因此等同於常量。
但對於複合型別的資料(主要是物件和陣列),變數指向的記憶體地址,儲存的只是一個指標,const
只能保證這個指標是固定的,至於它指向的資料結構是不是可變的;
相關推薦
ES6新增const誤區
我們使用const宣告常量時,總認為值一旦宣告就不可改變,然後我發現在定義物件時,物件的值是可以改變的; 對於數值: var message = "Hello!"; let age = 25; // 以下兩行都會報錯 const message = "Goodbye!"; const ag
es6新增的api
處理 isn tr1 object tar 成了 就會 js字符串 new 從值的轉換到數學計算,ES6給各種內建原生類型和對象增加了許多靜態屬性和方法來輔助這些常見任務。另外,一些原生類型的實例通過各種新的原型方法獲得了新的能力。 註意: 大多數這些特性都可以被忠實地填補
es6 新增數據類型Symbol
對象 覆蓋 defined 讀者 def sta log images 屬性 es6在string number boolean null undefined object之外又新增了一種Symbol類型。 Symbol意思是符號,有一個特性—每次創建一個Sy
Es6 新增解構賦值
等價 gin let 一個 函數返回 部分 syntax 解析器 求值 1.數組的解構賦值 基本用法 ES6 允許按照一定模式,從數組和對象中提取值,對變量進行賦值,這被稱為解構(Destructuring)。 要想實現解構,就必須是容器,或者具有可遍歷的接口。 以
ES6新增數據結構WeakSet的用法
內存 釋放 tro 對象 als con 其它 value 被垃圾回收 WeakSet和Set類似,同樣是元素不重復的集合,它們的區別是WeakSet內的元素必須是對象,不能是其它類型。 特性: 1.元素必須是對象。 添加一個number類型的元素。 const
ES6新增數據結構Map的用法
轉換函數 out 使用數組 undefine true blog name efi foreach Javascript的Object本身就是鍵值對的數據結構,但實際上屬性和值構成的是”字符串-值“對,屬性只能是字符串,如果傳個對象字面量作為屬性名,
Es6系列--const
nbsp 個數 作用域 可變 bubuko 數組賦值 ima 代碼 指向 const是用來定義常量,一旦聲明,其值就不能改變 const聲明的常量不得改變值。這意味著,const一旦聲明常量,就必須立即初始化,不能留到最後賦值。 const的作用域與let相同:只
ECMAScript簡介以及es6新增語法
組織 腳本 結果 on() 帶來 asc arguments 面向對象編程 lse ECMAScript簡介 ECMAScript與JavaScript的關系 ECMAScript是JavaScript語言的國際化標準,JavaScript是ECMAScript的實現。
ES6新增特性——Promise
new 通過 方式 鏈式操作 復雜 程序 行動 變化 settime 一:為什麽會出現? 1、場景一:在很多業務需求中,你需要通過ajax進行多次請求,而且每次請求返回的數據需要作為參數進行下一次的請求,於是會出現ajax層層嵌套問題。多個請求操作層層依賴,加上每一層還會有
ECMAScript 學習筆記(2)--ES6新增let、箭頭函數理解
輸出 分析 引擎 重新 -a 都是 存在 使用 [1] 1、關於let用來鎖定塊程序內的變量非常實用: var a = []; for (var i = 0; i < 10; i++) {a[i] = function () {console.log(i);}
Js基礎知識7-Es6新增對象Map和set數據結構
。。 log trie tty get 代碼 構造 ivr 錯誤 前言 JavaScript中對象的本質是鍵值對的集合,ES5中的數據結構,主要是用Array和Object,但是鍵只能是字符串。為了彌補這種缺憾,ES6帶來了一種新的數據結構Map。 Map也是鍵值對的集
Es6新增的模組化export和export default的主要區別
1.在一個檔案或模組中,export,import可以有多個,而export default只能有一個。 2.通過export匯出模組式,匯入此模組要加{},export default 則不需要。 詳細例子如下: 1、export //demo
ES6新增 Set
Set (1)基本語法 Set是ES6新提供的一種資料結構,它類似於陣列,但是成員的值都是唯一的,沒有重複。 1.Set建構函式 Set本身是一個建構函式,Set函式接受具有iterator介面的資料結構作為引數,用來初始化。以陣列為例: const set=ne
ES6新增 Map
Map (1)基本語法 javascript的物件(Object)本質上是鍵值對的集合,只能用字串作為鍵名,對於其他的型別,會自動轉為字串: let array_ = [1, 2, 3, 4];//陣列 let function_ = function () {}
es6 新增 let 與 var 比較
用var的不足之處 不足一 var arr = [ ]; for(var i=0; i<10; i++){ arr [i] = function(){ alert(i) } } arr [8](); //結果:10 看程式碼,不難猜測程式碼的意圖是想給陣列a的
ES6新增資料結構-set與map
ES6新增資料結構-set與map 1.Set *Set是ES6新增的一種資料型別,怎麼將它與物件陣列區分呢使用typeof set物件 返回的是object: let set=new Set(); console.log(typeof set); //object 這種方法
ES6新增的資料結構Map和WeakMap
一、Map Map物件是一種有對應 鍵/值 對的物件, JS的Object也是 鍵/值 對的物件 ; ES6中Map相對於Object物件有幾個區別: 1、Object物件有原型, 也就是說他有預設的key值在物件上面, 除非我們使用Object.create(obj)建立一個沒
ES6新增的資料結構Set和WeakSet
一、Set ES6提供了新的資料結構Set,Set物件不是真正的陣列,可以用Array.from()方法吧Set物件轉化為真正的陣列。 可以用來儲存複雜資料型別(Object)或者基本資料型別, 所有儲存的值都是唯一的。 (Set是一種可遍歷的集合物件,可以和陣列進行比較理解) Se
ES6新增的symbol資料型別
1、Symbol的概念 在ES5中,物件屬性名都是字串容易造成屬性名衝突。為了避免這種情況的發生,ES6引入了一種新的原始資料型別symbol,表示獨一無二的值。 Symbol() 函式返回的是 symbol 型別的值,該型別具有靜態方法和靜態屬性。 let sy1 = Symbol
gulp構建專案(十三):babel-polyfill編譯es6新增api
需求分析: es6語法以及提供的強大api給前端帶來了很大便利,可是部分瀏覽器無法識別es6語法 gulp-babel只能將es6語法編譯成es5,比如:箭頭函式、let變數等,但是API不能編譯,比如Object.assign 引用babel-p