前端js技巧题、核心技术题

我来纠错
/**************  题型一  ***************/
<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);	
};


/**************//// 更多题型,敬请期待  ////***************/
/**************//// 您有好的题型也可以反馈给我们  ////***************/
发送
热门关键词:
命令
知识类型:
标题描述:
详细解答:

提交审核您编辑的知识会经过 前端大牛 人工审核。