js的类型分为
强类型的语言遇到函数引数类型和实际调用类型不符合的情况经常会直接出错或者编译失
强类型 偏向于不容忍隐式类型转换。
弱类型 偏向于容忍隐式类型转换。
区分一下
静态类型: 编译的时候就知道每-个变量的类型,因为类型错误而不能做的事情是语法错误。
动态类型:编译的时候不知道每一个变量的类型,因为类型错误而不能做的事情是运行时错误。运行的时候还会被发现。不在编译期做类型检查,在运行期做
typeof null === 'object 在 JavaScript 最初的实现中,JavaScript 中的值是由一个表示类型的标签和实际数据值表示的。对象的类型标签是 0。由于 null 代表的是空指针(大多数平台下值为 0x00),因此,null 的类型标签是 0,typeof null 也因此返回 "object"。
console.log(typeof null === 'object');//true
显示类型转换比较简单,通过 JS 提供的一些函数,可以直接进行转换
let a='da'; let b=false; console.log(Boolean(b)); //false console.log(Boolean(a));//true console.log(Boolean()) // false console.log(Boolean(true)); //true console.log(Boolean("da")); console.log(Boolean(false)) // false console.log(Boolean(undefined)) // false console.log(Boolean(null)) // false console.log(Boolean(+0)) // false console.log(Boolean(-0)) // false console.log(Boolean(NaN)) // false console.log(Boolean("")) // false
JS 的隐式转换主要涉及的是两个操作符, + 和 ==
-将操作数转换为Number,并且要反转正负
原文链接:https://juejin.cn/post/6844904095774425101#heading-4
将日期显示转换为数字
一元运算符 + 的另一个常见用途是将日期(Date)对象强制类型转换为数字,返回结果为Unix时间戳。
var time = +new Date()
"number" + 15 + 3 // "number153"
'+' 运算符按从左到右的顺序的执行,所以优先执行 “number” + 15, 把 15 转为 string 类型,得到 “number15” 然后同理执行 “number15” + 3
15 + 3 + "number" // "18number"
15 + 3 先执行,运算符两边都是 number 类型 ,不用转换,然后执行 18 + “number” 最终得到 “18number”
(未完)这里不太懂为啥
'91'-1 //90
91-'1'//90
与加法不同