前端js技巧题、核心技术题
分享知识http://www.fedrobots.com/?search=259200我来纠错/************** 题型一 ***************/
<script>
var a =1;
function fn1(a){
alert(a);
a = 2;
}
fn1(); //调用的时候,未传参数,里面alert取不到值,就会弹出undefined
alert(a); //弹出1,因为在fn1里a=2,是给参数a的赋值,不影响外面的a=1
</script>
/************** 题型二 ***************/
var a ={},b={key:'b'},c={key:'c'};
a[b] = 123;
a[c] = 456;
console.log(a[b]); //弹出456
解析,a[b]中的b是一个变量,而且是一个对象,对象在作为key值的时候会被转化为[object Object],
此时a的值为{"[object Object]":123},a[c]同理可得a = {"[object Object]":456} ,所以"[object Object]"的值被456从新覆盖了。
/************** 题型三 ***************/
每次执行的都是i的最后一个值3,怎么解决?
for (var i = 0; i < 3; i++) {
setTimeout(function(){
console.log(i);
},500);
};
//解决方案1,用闭包的变量作用域方法来解决i每次取最新的值,尔不被外界的变量污染。
for (var i = 0; i < 3; i++) {
(function(i){
setTimeout(function(){
console.log(i);
},500);
})(i);
};
//解决方案2,用let声明一个块级作用域的本地变量i,
for (let i = 0; i < 3; i++) {
setTimeout(function(){
console.log(i);
},500);
};
/**************//// 更多题型,敬请期待 ////***************/
/**************//// 您有好的题型也可以反馈给我们 ////***************/