JavaScript与DOM常见⾯试题
1. JavaScript
1.1.简要描述 JavaScript的数据类型?
参考答案:
Java Sc ri pt 的数据类型可以分为原始类型和对象类型。
原始类型包括 string、 number和 boolean三种。其中,字符串是使⽤⼀对单引号或者⼀对双引号括起来的任意⽂本;⽽数值类型都采⽤64位浮点格式存储,不区分整数和⼩数;布尔(逻辑)只能有两个值: true或 false。
复杂类型指其他对象,如 Array、 Date、 Object等。
除此之外, JavaScript中还有两个特殊的原始值: null(空)和 undefined(未定义),它们代表了各⾃特殊类型的唯⼀成员。
1.2.读代码,写结果
写出下列表达式的计算结果:
var a= [];
var b= a;
b[0] = 1;
console.log(a[0] ) ; console.log(b[0] ) ; console.log(a===b) ;
参考答案:
上述代码的结果分别为:
1
1
true
将对象赋值给变量,仅仅是赋值的引⽤,对象本⾝并没有赋值⼀次,因此,变量 a和 b 指向同⼀个数组
1.3.简要描述 null和 undefined的区别
参考答案:
null:是 JavaScript的关键字,⽤于描述“空值”,对其执⾏ typeof操作,返回“object”,
即为⼀个特殊的对象值,可以表⽰数字、字符串和对象是“⽆值”的。
undefined:是预定义的全局变量,其值为“未定义”,它是变量的⼀种取值,表⽰变
量没有初始化。当查询对象属性、数组元素的值时,如果返回 undefined则表⽰属性或者元素不存在;如果函数没有任何返回值,也返回undefined。
需要注意的是,虽然 null和 undfined是不同的,但是因为都表⽰“值的空缺”,两者可以互换。因此,使⽤“==”认为⼆者是相等的,需要使⽤“===”来区分它们。
1.4.读代码,写结果
写出下列表达式的计算结果:
10+ "objects" "7" * "4"
1 - "x"
1+ {}
true+ true
参考答案:
javascript 函数上述代码的结果分别为:
10objects
28
NaN
1[object Ojbect] 2
1.5.读代码,写结果
/ /转换为字符串
/
/转换为字符
//⽆法转换为数值进⾏计算,因此返回 NaN
//返回对象的 toString( )结果,按照字符串相加/ / bo o l 类型转换为数值类型
//null转换为数值 0
写出下列代码的输出结果:
var a= 2;
var obj= { x: 1, y: { z: 2} }; var n= [obj,3,[4,5]];
console.log(a<< 2);
console.log(obj["y"] .z) ;
console.log(n[0] .y["z"] ) ;
console.log(n[2] ["1"] ) ;
delete n[0];
console.log(n[0] .x) ;
参考答案:
上述代码的输出结果分别为:
8
2
2
5
console. log(n[ 0] .x) ;此⾏代码错误,⽆法输出有效信息,会输出 Error信息
1.6.阅读如下代码:
var x= 10;
var y= 20;
var z= x< y? x++ : ++y;
上述代码运⾏后,变量 x、 y和 z的值为多少?
参考答案:
上述代码运⾏后,变量x的值为11;变量 y的值为20;变量 z的值为10。
这是因为,运⾏第三⾏代码时,只执⾏?后的第⼀个语句,因此, y的值不发⽣变化,仍为20;并返回 x的值赋值给变量z,因此z的值为10;然后将 x的值增加1,变为11。
1.7.什么是“逻辑短路”?
参考答案:
逻辑短路是对于逻辑运算⽽⾔,是指,仅计算逻辑表达式中的⼀部分便能确定结果,⽽不对整个表达式进⾏计算的现象。
对于“&&”运算符,当第⼀个操作数为 false时,将不会判断第⼆个操作数,因为此时⽆论第⼆个操作数为
何,最后的运算结果⼀定是 false;对于“||”运算符,当第⼀个操作数为 true时,将不会判断第⼆个操作数,因为此时⽆论第⼆个操作数为何,最后的运算结果⼀定是 true。
1.8.阅读如下代码
var empAge= 20;
var empName;
if (empAge> 20&& empName.length> 0) {
console.log(1) ;
}
else {
console.log(2) ;
}
上述代码运⾏后,将产⽣有效输出,还是代码错误?
参考答案:
上述代码运⾏,会输出2,⽽不会发⽣错误。
这是因为, if条件中的逻辑表达式的第⼀个条件( empAge> 20)不满⾜,会返回false,此时,将发⽣“逻辑短路”,⽽不会继续判断下⼀个条件。因此,即使下⼀个条件中的变量 empName没有赋值,此时如果计算 empName.length将发⽣错误;但是,因为发⽣了“逻辑短路”,不会计算此表达式,因此不会发⽣错误。
既然 if条件中的逻辑表达式返回 false,则运⾏ else语句:输出2。
1.9.解释⼀下 JavaScript中的局部变量与全局变量的区别
参考答案:
全局变量拥有全局作⽤域,在 JavaScript代码的任何地⽅都可以访问;在函数内声明的变量只在函数体内有定义,即为局部变量,其作⽤域是局部性的。
需要注意的是,在函数体内声明局部变量时,如果不使⽤ var关键字,则将声明全局变量。
1.10. 读代码,写结果
写出下列代码的输出结果:
var x= "global";
function test() {
var x= "local";
return x;
}
console.log(test( ) ) ;
参考答案:
上述代码的输出结果为 local。这是因为,在函数 test()体内,局部变量的优先级⾼于同名的全局变量。因此,如果在函数体内声明的局部变量和全局变量重名,则以局部变量优先。因此,调⽤函数 test()时,返回的是局部变量x,其值为 local。
1.11. 什么是 JavaScript中的函数作⽤域
参考答案:
J ava Sc ri pt 中的函数作⽤域是指:变量在声明它的函数体以及这个函数体嵌套的任意函数体内都是有定义的。这意味着,在函数体内声明的所有变量在整个函数体内始终是可见的,这种特性也被称为“声明提前”,即,函数内声明的所有变量(不涉及到赋值)都被提前⾄函数的顶部声明。
⽐如,查看如下代码:
function test() {
console.log(x) ;
var x= 10;
console.log(x) ; }
test() ;
上述代码运⾏,将先输出 undefined,再输出10。
这是因为,虽然变量 x在第⼆⾏声明并赋值,但其有效范围为整个函数体,因此,第
⼀⾏代码输出时,表⽰变量 x已经声明但是没有赋值,因此输出 undefined;第三⾏代码
运⾏时,因为变量 x已经赋值为10,则输出10。
1.1
2. 读代码,写结果
写出下列代码的输出结果:
function test() {
var sum= 0;
for (var i= 0; i< 10; i++) {
sum+= i;
}
console.log(sum) ;
console.log(i) ;
}
test() ;
参考答案:
上述代码中,输出 sum的值为45;输出 i的值为10。
这是因为,在函数 test()体内,循环计算完毕后,变量 sum的值为从 0累加到10 的和,即45;变量 i虽然是在 for循环中声明,但是在整个函数体内都有效(函数作⽤域),因此,循环完毕后,变量 i的值为10。
1.13. 读代码,写结果
写出下列代码的输出结果:
var x= "global";
function test() {
console.log(x) ;
var x= "local";
console.log(x) ;
}
test() ;
参考答案:
上述代码中,先输出 undefined,再输出 local。
函数 test()体内声明了与全局变量同名的局部变量 x,则将覆盖全局变量,即局部变量优先。因此,第⼀次输出变量 x时,为输出局部变量x,此时变量 x只有声明⽽没有赋值,因此输出 undefined;第⼆次输出变量 x时,局部变量x已经赋值,因此输出字符串local。
1.14. 简述 arguments对象的作⽤
参考答案:
在函数代码中,使⽤特殊对象 arguments可以访问函数的参数。即,开发者在定义函数时,⽆需明确的为⽅法声明参数,也可以在⽅法体中使⽤ arguments来访问参数。这是因为, arguments是⼀种特殊对象,在函数代码中,表⽰函数的参数数组。
正因为 arguments表⽰参数组成的数组,因此,⾸先可以使⽤ arguments.length 检测函数的参数个数,其次,可以通过下标(arguments[index])来访问某个参数。这样,可以⽤ arguments对象判断传递给函数的参数个数并获取参数,适⽤于函数参数⽆法确定个数的情况下。
1.15. 简要描述 JavaScript中定义函数的⼏种⽅式
参考答案:
JavaScript中,有三种定义函数的⽅式:
1、函数语句:即使⽤ function关键字显式定义函数。如:
function f(x){
return x+1;
}
2、函数定义表达式:也称为“函数直接量”。形如:
var f= function(x){return x+1;};
3、使⽤ Function()构造函数定义,形如:
Var f= new Function(“x”,”return x+1;”);
1.16. 读代码,写结果
写出下列代码的输出结果:
var f= function (x) { return x* x; }
console.log(f) ;
console.log(f(10) ) ;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论