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的生存环境叫做用域。
更多精彩内容,请关注公众号。
前端交流群(群里大佬如云,会常常分享优秀的文章,前端路上,结伴同行~)