首页 > 代码库 > JavaScript面试知识点与开发技巧汇总
JavaScript面试知识点与开发技巧汇总
1.bind相关用法
fun.bind(obj)将obj传入fun作为其作用域
fun.bind将返回一个新的函数地址,fun.bind(obj)!=fun.bind(obj)
反复bind只有第一次有效
2.js中的真值
0 , “” , null , undefined , false , NaN转为boolean都是false
null == undefined 真
null === undefined 假
3.表达式的使用
if(a>0)
{
b = true
}
else
{
b = false
}
应写为b = a > 0
复杂情况可以使用局部变量或三元表达式
4.闭包与引用传递
1.闭包里传的都是引用(简单类型也是引用!)
2.for()循环内var定义的变量相当于在外面定义了var i = 0
for()循环内应使用let i = 0 , 这样i只在for循环内部可见
3.由于这个闭包的关系,可以看到,是循环完毕之后才返回
var methods = [] for(var i = 0 ; i < 10 ; i++) { methods[i] = (function(){ console.log("i =" , i) return i }) } methods[0]() VM1405:5 i = 10 10 i = 100 100 methods[0]() VM1405:5 i = 100 100
以下代码暴露出for循环内错误使用闭包以及var声明迭代器的严重错误
var methods = [] for(var i = 0 ; i < 10 ; i++) { methods[i] = (function(){ console.log("i =" , i) return i }) } methods[0]() VM1196:5 i = 10 10 for(var i = 0 ; i < 10 ; i++)methods[i]() VM1196:5 i = 0 VM1196:5 i = 1 VM1196:5 i = 2 VM1196:5 i = 3 VM1196:5 i = 4 VM1196:5 i = 5 VM1196:5 i = 6 VM1196:5 i = 7 VM1196:5 i = 8 VM1196:5 i = 9 9 methods[0]() VM1196:5 i = 10 10 for(var j = 0 ; j < 10 ; j++)methods[j]() 10VM1196:5 i = 10
JavaScript面试知识点与开发技巧汇总
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。