JavaScript面试题基础部分总结(二)

1、数据类型判断

(1)NaN与任何值相等都为假,包含自身。

(2)+的使用:

number +number =数值相加
number+string=  字符串拼接 

-的使用:

string-string会先进行number函数的转换,转换不了就为NaN

{} + 'b' > {} + 'a' 

+优先级高于>   拼接过后比较ASCII码依次比较

(3)类型转换和调用构造函数

!![] 这里有个强制类型转换 把数组转换为布尔类型false,又进行取非,为true。

!!String("")   // 返回true

!!Boolean("")  // 返回false

!!Number("")   // 返回true

!!Boolean([])   // 返回true

!!String([])    // 返回false

!!Number([])    //false

!!String(0)   // 返回true  #被转为字符串"0"

!!Number(0)      // 返回false

!!Boolean(0)   // 返回false

[] 转为字符串是 ""       // String([]) 返回""

[] 转为数字是 0            // Number([]) 返回0

[] 转为布尔值是 true        // Boolean([]) 返回true

true 转为数字是 1       // Number(true) 返回1

false 转为数字是 0      // Number(false) 返回0

还有一些比如 []==false 两边的值会转化为0,结果为true。

在 JS 中,只有 0,-0,NaN,"",null,undefined 这六个值转布尔值时,结果为 false,任何对象转布尔变量都为真 true。y= Boolean(0)表示类型转换,y为布尔值 x=new Boolean(false)表示调用构造函数,x为布尔对象,对象的值为真。

If (obj){****}等价于If (obj != null ){****}

(4)null数据类型为object   undefined的数据类型是undefined  undefined==null  结果为true

(5)三元运算符  z=x<y?x++:++y   判断条件为真  z等于x x运算过后加一  ++y不进行运算 表示在运算之前加一

2、获取页面元素 禁用页面元素

by id获取的是单个DOM节点,by tagname和class是数组

input元素 onblur失去焦点  onfocus获取焦点

禁用  

document.getElementById("button1").disabled = true;
document.getElementById("button1").setAttribute(“disabled”,”true”);

3、作用域

匿名函数具有全局作用域

闭包函数能访问上级作用域的变量

4、事件机制

事件捕获->事件处理->事件冒泡

5、异步编程

异步任务会被主线程挂起,不会进入主线程,进入消息队列(任务队列),当执行栈为空时,该消息对应的任务才会进入执行栈获得执行的机会。

回调函数   事件监听  发布/订阅  Promises对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值