写在前面
欠的“债”比较多,现在来还债了
早晨4:30,不是被闹钟叫醒的,而是这些“债”
果然,出来混,迟早是要还的
(一)JavaScript
No.1
console.info(0.1+0.2===0.3)
输出
false
原因
十进制转二进制的时候精度损失(参考链接1)
No.2
console.info('11'-2+'1')
输出
91
原因
做减法,会转换字符类型为Number;
做加法,会转换类型为String
No.3
console.info('11'-2-'1')
输出为8,原因同上
No.4
console.info(typeof '' === 'string')
输出
true
原因
typeof 可以判断出基础数据类型(除null外) 参考链接2
可正确判断的有
console.info(typeof '' === 'string')
console.info(typeof 4)
console.info(typeof false)
console.info(typeof undefined)
console.info(typeof function(){})
以下三种都会返回为object
console.info(typeof [])
console.info(typeof null)
console.info(typeof {})
No.5
console.info(typeof new Number(123))
输出
object
原因
new Number 返回的是创建的Number对象
No.6
console.info(typeof 123;);
输出
Uncaught SyntaxError: missing ) after argument list
原因
加了分号,提前结束语句,无法正确编译
No.7
console.info('hello' instanceof String)
输出
false
原因
instanceof是判断引用类型的,而'hello'不是对象类型,所以是false
正确姿势如下
let aa=new String('hello')
console.info(aa instanceof String)
No.8
console.info(['item1','item2'] instanceof Array)
输出
true
原因
数组是引用类型,故可判断;参考链接3
No.9
A={n:1};
B=A;
A.x=A={n:2}
console.info(A.x,B.x)
输出
undefined {n:2}
原因
引用类型,A为{n:2},B为{n:1,x:{n:2}}
参考链接:
1、https://www.jianshu.com/p/62e286bbe076
2、https://www.cnblogs.com/Knowledge-is-infinite/p/10608144.html
3、https://developer.ibm.com/zh/articles/1306-jiangjj-jsinstanceof/
网友评论