面试题(二)

来源:互联网 发布:黑暗之魂1数据 编辑:程序博客网 时间:2024/04/29 20:09

//1
var a=10;
function aaa(){
alert(a);
}
function bbb(){
var a=20;
aaa();//如果非要理解成把函数块挪到调用的位置执行,那也是和相对定位一样,根本上并没有挪动;
}
bbb();//10,在函数调用的时候不是把函数块挪到调用的位置执行而是让这个函数在原来的位置执行,所以aaa函数执行的时候就是全局的a;
//2
function ccc(){
var b=c=10;
}
ccc();
// console.log(b);//局部变量获取不到报错not defined
console.log(c);//全局变量10
//3 变量查找就近原则,先找带var的,如果没有找到就向外层找
var d=10;
function ddd(){
console.log(d);//undefined
var d=20;
}
ddd();
//4
var e=10;
function eee(){
fff();
console.log(e);
function fff(){
var e=20;
}
}
eee();
//5 当参数跟局部变量重名时,优先级是等同的
//(一)
var f=10;
function ddd(f){
console.log(f);//undefined
var f=20;
}
ddd();
//(二)//参数也是局部变量,因此在全局根本访问不到
var l=10;
function kkk(l){
l+=3;
}
kkk();
console.log(l);
//(三)//引用类型的赋值存在引用的关系,内存地址不变
var crr=[1,2,3];
function jjj(crr){
crr.push(4);
}
jjj(crr);
console.log(crr);//[1,2,3,4];
//(四)//这块是一个重新赋值的过程,内存地址改别
var drr=[1,2,3];
function jjj(drr){
crr=[1,2,3,4];
}
jjj(crr);
console.log(crr);//[1,2,3];
//6 基本数据类型的额赋值只是值得赋值,
var x=5;
var y=x;
y+=3;
console.log(x);//5
//引用类型的赋值存在引用的关系,内存地址不变
var arr=[1,2,3];
var brr=arr;
brr.push(4);
console.log(arr);//[1,2,3,4]
//
var arr=[1,2,3];
var brr=arr;
brr=[1,2,3,4];//这块是一个重新赋值的过程,内存地址改别
console.log(arr);//[1,2,3]

原创粉丝点击