typeof Symbol() === 'symbol'; // true Symbol('key') !== Symbol('key'); // true Symbol('key') === Symbol('key'); // false前端
特色:java
請說出如下代碼打印的結果es6
if (1 == true)
console.log(1)
if (1 === true)
console.log(2)
if ([])
console.log(3)
if ([] == [])
console.log(4)
if ([] === [])
console.log(5)
if (undefined == null)
console.log(6)
if ('' == null)
console.log(7)
if (NaN == NaN)
console.log(8)
複製代碼
typeof undefined // undefined typeof null // object數組
console.log(isNaN(NaN)) //true console.log(isNaN(10)) //false console.log(isNaN('20')) //false 將'20'轉爲數字類型20 console.log(isNaN('abc')) //true console.log(isNaN(true)) //false 將true轉爲1瀏覽器
const a = [1,2,3]; const b = a; b[0] = 5;
a = ? // [5, 2, 3]緩存
let obj = {
name: 'kk',
bf: ['a', 1],
a() {
console.log('d')
},
offer: null
}
function deepClone(origin, target={}) {
const toStr = Object.prototype.toString,
arrStr = "[object Array]"
for(let prop in origin) {
if(origin.hasOwnProperty(prop)) {
if(origin[prop] !== null && typeof origin[prop] === 'object') {
target[prop] = toStr.call(origin[prop]) === arrStr ? [] : {}
deepClone(origin[prop], target[prop])
} else {
target[prop] = origin[prop]
}
}
}
return target
}
let ans = deepClone(obj)
ans.offer = 'xxx'
console.log(ans, obj)
複製代碼
區別:安全
arr.every((val, index, array)=>val=='a')markdown
arr.some((val, index, array)=>val=='a')閉包
arr.filter((val, index, array)=>val=='a')app
arr.reduce((prev,cur,index,arr)=>{ // 加法 // return prev+cur // 階乘 // return Math.pow(prev,cur) return prev**cur })
「
閉包就是可以讀取其餘函數內部變量的函數
」
let add = (()=>{
let sum = 0
return n=>sum += n
})()
console.log(add(5), add(6), add(1))
複製代碼
瀏覽器給js的生存環境叫做用域。
更多精彩內容,請關注公衆號。
前端交流羣(羣裏大佬如雲,會常常分享優秀的文章,前端路上,結伴同行~)