symbol是es6新引入的一種基本資料的值 是一種獨一無二的值
他是js裡面的第七種型別 es6資料型別有 number,string,boolean,object,null,undefined ,symbol
1,symbol 函式不能用new命令 因為symbol是原始資料型別,不是物件。可以接受乙個字串作為引數,為新建的symbol提供描述,這樣有利於區分
console.
log(
symbol()
===symbol()
)//false
console.
log(
symbol
("aa"
)===
symbol
("aa"))
//false
因為symbol具有唯一性 就算引數一樣 表示的值也不一樣
2,symbol沒有字面量寫法
3他是一種新增的資料型別 使用typeof檢測是symbol
var a =
symbol
("a");
console.
log(
typeof
(a))
//undefined
4 symbol 不能用new關鍵字來建立
var s =
newsymbol
("a");
//報錯symbol is not a constructor
5 symbol可以作為屬性名
由於每個symbol的值都是不相等的 用於物件的屬性名,就能保證不出現同名的的屬性
var aaa =
symbol
("a");
var bbb =
symbol
("b"
)let a =
console.
log(a)
//symbol(a): 1
// symbol(b): 2
6symbol作為屬性名的遍歷
symbol作為屬性名的時候,用for…in,和for…of不能遍歷用object.getownpropertysymbols()方法 可以獲取所有的symbol屬性名,這個方法返回的是又symbol物件的陣列
var aaa =
symbol
("a");
var bbb =
symbol
("b"
)let a =
console.
log(object.
getownpropertysymbols
(a))
//[symbol(a), symbol(b)]
7symbol.for
這個方法引數是乙個字串 如果有這個值 那麼將這個值返回 如果沒有 就建立乙個數值 在全域性作用域內新增
var s1 = symbol.
for(
"aaa");
console.
log(s1)
;var s2 = symbol.
for(
"aaa");
console.
log(s2)
; console.
log(s1 == s2)
//true
8symbol.keyfor
這個方法返回的是已經在全域性作用域登記的symbol值得標記引數,如果沒有登記,就返回undefined
symbol.for()
與symbol()
這兩種寫法,都會生成新的 symbol。它們的區別是,前者會被登記在全域性環境中供搜尋,後者不會。
var syb1 = symbol.
for(
"sss");
console.
log(symbol.
keyfor
(syb1));
//true 這個
var syb2 =
symbol
("sss");
console.
log(symbol.
keyfor
(syb2));
//false
s6是允許使用箭頭函式的
只有乙個引數並且函式體只有一句話就可以省略()返回值可以省略 函式體省略大括號
var
fn= n =>
123;
function
fn(n)
var r =fn(
);console.
log(r)
;
2 箭頭函式沒有引數 或者有多個引數 那麼引數中的()就不能省略
varf=
()=>5;
// 等同於
varf
=function()
;var
sum=
(num1, num2)
=> num1 + num2;
// 等同於
varsum
=function
(num1, num2)
;
3如果箭頭函式的函式體有多條** 那麼就不能省略{} 以及返回值也不能省略return
var
sum=
(num1, num2)
=>
4 如果函式體只有一句話 並且返回值是物件 那麼這個返回值必須使用()包起來
因為 函式體使用的是{} 物件也是{}
// 報錯
letgettempitem
= id =>
;// 不報錯
letgettempitem
= id =>()
;
5如果物件只有乙個鍵值對,那麼就不會報錯 但是也沒有正確的值
因為js引擎在解析的時候 {} 預設解析為函式體結構 函式體** name : name;
var
info
=(name, age)
=>()
console.
log(
info
("籮筐",16
));//
varp
=(name)
=>
console.
log(p(
"lili"))
//不報錯 但是會列印undefined
箭頭函式和this
箭頭函式 es6新增了乙個使用箭頭符號 定義函式的語法特性 函式 let f function 箭頭函式語法 let f li let f function name 箭頭函式語法 let f 引數 返回值 let f name name let f let f x,y console.log f ...
箭頭箭頭函式
var fn function a 一樣 jineng function 箭頭函式外面指向誰就指向誰 有function.console.log fn3 1 像函式表示式 this指向不變.不能作為建構函式 不能使用new 返回物件的話.外部用括號 var fn7 name asdfnasd age...
js 箭頭函式和this
要討論this,就一定要與函式一起討論。普通函式中,this所表示的意義與他所處的環境有關。環境屬於誰,this就指代誰。觀察列印結果,你會發現this.age沒有值,列印結果是nan,表示沒有age的值不是乙個number型別,無法自增加一。function person 1000 var o n...