1 考察基本转换类型
let result = 100 + true + 21.2 + null + undefined + 'xiaoxu' + [] + null + 1 + false console.log(result); // NaNxiaoxunull1false数据类型:Number Boolean String null undefined symbol bigint
复杂数据类型:Object Fundtion
浏览器默认转换方法是Number进行转换
区别在于,当转换的内容包含非数字的时候,Number() 会返回NaN(Not a Number)
parseInt() 要看情况,如果以数字开头,就会返回开头的合法数字部分,如果以非数字开头,则返回NaN
// 隐式转换,true变为0 null变为0 underfined变为NaN
// []变为空字符串
2 鲤鱼酒窝转换
console.log([]==false);// true // 0 == 0 console.log(![]==false);// true // false == false 只有0,null ,undefined,NaN,空字符串,会转换为false,其他的都会转换为true.3 数据转换的方法
// 方法一 var a = { i:0, toString(){ return ++this.i } } //方法二 var i = 0; Object.defineProperty(window, 'a', { get() { return ++i } }) if (a == 1 && a == 2 && a == 3) { console.log(1); }4 parseInt
let a = [10.8, 0, 10, 25, 23] console.log(a.map(parseInt)); // parseInt(10.8 , 0) 转换为10进制 10.8 // parseInt(0 , 1) NaN // parseInt(10 , 2) 2进制 1*2^1 + 0*2^0 = 2 // parseInt(25 , 3) 3进制 2*3^0 = 2 // parseInt(23 , 4) 4进制 2*4^0 = 2 // 第二个参数就是进制数,不写就是十进制 // 第二个参数是2-36。如果不是就是NaN5 堆栈的详解
let a = { n: 1 } let b = a; a.x = a = { n: 2 } console.log(a.x); console.log(b);
6 变态的变量提升问题
7