首页 > 编程知识 正文

js简单算法题,js的算法

时间:2023-05-06 00:01:46 阅读:274339 作者:1360

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。如果不是就是NaN

5 堆栈的详解

let a = { n: 1 } let b = a; a.x = a = { n: 2 } console.log(a.x); console.log(b);


6 变态的变量提升问题

var a = 0 if(true){ a = 1 function a(){} a = 12 console.log(a); } console.log(a);


7

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。