unicode編碼可以以變數形式存在
f\u006f = 'abc'
console.log(foo) //abc
base64轉碼:不適合非ascii碼的字元
應用場景:0-31的ascii無法列印出來,可以用base64轉碼;以文字格式傳輸二進位制資料
btoa(string) 任意值轉換為base64編碼
atob() base64編碼轉回原來的值
string.fromcodepoint():用於從unicode碼點返回對應字元,可以識別0xffff的字元
str = "hello"
str.length
str.charat(0) //返回對應索引位置上的字元
str.charcodeat(0) //返回對應索引位置上字元的碼點
str.repeat(n) //將原字串重複n次,重複0次為空字串
str.padstart(補全後的字串長度, 用於補全的字串); //頭部補全
str.padend(); //尾部補全
e.g 'x'.padstart(3,'ab') //abx
原字串長度大於或等於補全後長度,則補全不生效,返回原字串
s = ' abc '
s.trim() //消除空格
s.trimstart() //消除頭部空格
s.trimend() //消除尾部空格
正規表示式:
[1]$
1、^為匹配輸入字串的開始位置
2、[0-9a-za-z]表示匹配所有數字,小寫字母,大寫字母
3、表示3到6的字元長度
4、¥表示結束符
var pattern = new regexp("x") //建立物件
test() //檢索字串中的指定值,返回true/false
pattern.test("wdx") //true
exec() //檢索字串中的指定值,返回該元素,如果沒有發現匹配,則返回null
compile() //修改檢索值
let 宣告的變數只在 let 命令所在的**塊 {} 內有效,在 {} 之外不能訪問。
在相同的作用域或塊級作用域中,不能使用 let 關鍵字來重置 let 關鍵字宣告的變數
const 宣告乙個唯讀的常量,一旦宣告,常量的值就不能改變。
const本質:const 定義的變數並非常量,並非不可變,它定義了乙個常量引用乙個值,只是不可以對它進行重新賦值。
在相同的作用域或塊級作用域中,不能使用 const 關鍵字來重置 const 關鍵字宣告的變數
var 關鍵字定義的變數可以在使用後宣告,也就是變數可以先使用再宣告
const 、let關鍵字定義的變數則不可以在使用後宣告,也就是變數需要先宣告再使用。
const、let都具備塊級作用域的特性
unshift()方法,在陣列頭部新增乙個或多個元素,返回新陣列長度
push()方法,在陣列尾部新增乙個或多個元素,返回新陣列長度
setvar a = new set([1,2,3])
array.from(a) 可以將set a 轉換為陣列
[...a] 就是將 set 轉換成 array
set.has(x) 是 set 中的乙個方法。即判斷當前 set 中是否含有 x,如果有返回 true,沒有返回 false。
a.size //返回set的長度 3
set.add(x)新增某個值,返回set本身
set.delete(x)刪除某個值,返回true/false
set.clear()清除所有成員,無返回值
set的四個遍歷方法:
set.keys() //返回鍵名
set.values() //返回鍵值
set.entries() //返回鍵值對
set.foreach() //使用**函式遍歷每個成員
foreach() 方法用於呼叫陣列的每個元素,並將元素傳遞給**函式。
weakset
其成員只能是物件;垃圾**機制不考慮其對該物件的引用,可以接收陣列物件 如: var ws = new weakset([[1,2],[4,5]])
有三個方法:add();delete();has()
mapmap 和 object的區別
乙個 object 的鍵只能是字串或者 symbols,但乙個 map 的鍵可以是任意值
map 的鍵值對個數可以從 size 屬性獲取,而 object 的鍵值對個數只能手動計算
key = {}
key ! = = {}
key = function(){}
key !== function(){}
key = ['a']
key !== ['a']
var map = new map()
map.set(鍵名,鍵值) //設定鍵值對
map.set("foo","123")
map.set("foo",null) //使用map需手動清除,否則記憶體會堆積,使用迴圈時記憶體容易崩潰
map.get(鍵名) //獲取對應的鍵值
map.has(鍵名) //判斷map中是否有鍵名對應的值,返回true/false
weakmap
只接受物件(null除外)作為鍵名
weakmap鍵名指向的物件,不計入垃圾**機制
weakmap和map的區別:沒有遍歷操作,沒有size屬性,無法clear,只可用,set,get,has,delete
函式函式名是乙個指標
arguments:函式的隱式引數,是乙個類陣列物件,包含傳入引數中的所有引數,該物件還擁有乙個指標callee,指向擁有該引數物件的函式
e.g 求和函式sum()相當於arguments.cllee()
函式的屬性和方法:length //函式希望接收的引數個數 prototype //函式的原型鏈
this:函式呼叫方法不同,this會指向不同的物件
1、以函式的形式呼叫,this永遠是window
2、以方法的形式呼叫,this就是呼叫方法的那個物件
symbol
用於設定物件的屬性名
let sym = new symbol();
可用的兩種寫法:
1、let obj = {}
obj[sym] = "name"
2、obj =
可以通過object.getownpropertysymbols()方法返回指定物件的所有使用symbol的屬性名,返回值為乙個陣列,值為所有用作屬性名的symbol值
symbol設定的值時全域性唯一的,如果希望使用同乙個symbol值,可以使用symbol.for()方法
迭代器for in 迴圈只能獲得物件的鍵名,for of迴圈允許獲得物件的鍵值
具備iteration介面的資料結構如下:
array、map、set、string、typedarray、函式的arguments物件、nodelist物件
e.g 陣列迭代:
let arr = [1, 2, 3]
let iter = arrsymbol.iterator
iter.next()
0-9a-za-z ↩︎
es6 基本語法
es6規定暫時性死區和let const語句不出現變數提公升,主要是為了減少執行時錯誤,防止在變數宣告前就使用這個變數,從而導致意料之外的行為。這樣的錯誤在 es5 是很常見的,現在有了這種規定,避免此類錯誤就很容易了。總之,暫時性死區的本質就是,只要一進入當前作用域,所要使用的變數就已經存在了,但...
es6基本語法
1.es6基本語法 變數的宣告 let 限制作用域 塊 const 常量 唯讀不可更改 const pi 3.14156 console.log pi pi 3.14 console.log pi let a 1 var a for var i 0 i 10 i a 6 輸出10 直接跳轉到最大值 ...
ES6基本語法
學js 箭頭函式 es6中可以使用 作為函式表達形式,極簡風格,引數 函式體。1 不帶引數function 等價於 2 帶引數function a 等價於 a 乙個引數時可以不寫括號 等價於 a 如果函式裡只有一條語句,可以省略return和 3 帶引數且函式裡只有一條返回語句,可以省略return...