JavaScript,DOM经典基础面试题

时间:2023-03-09 16:51:39
JavaScript,DOM经典基础面试题

JavaScript的数据类型

JavaScript的数据类型可以分为原始类型和对象类型

原始类型包括string,number和Boolean三种,其中字符串是使用一对单引号或者一堆双引号括起来的任意文本;而数值类型都采用64位浮点格式存储,不区分整数和小数;布尔(逻辑)只能有两个值:true和false.

复杂类型指其他对象,如array,date,object等

除此之外,JavaScript中海油两个特殊的原始值:null(空)和undefined(未定义),它们代表了各自特殊类型的唯一成员。

var a=[];

var b=a;

b[0]=1;

console.log(b[0]);

console.log(a[0]);

console.log(a===b);

答案:1  1  true

将对象赋值给变量,仅仅是赋值的引用,对象本身并没有赋值。因此变量a和b指向同一个数组

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);

答案:8  2

<<是将a二进制转换,一个公式n*2的m次方

n=a,m=<<后面的数

简述arguments对象的作用

答:在函数代码中,使用特殊对象arguments可以访问函数的参数,即开发者在定义函数时,无需明确的为方法声明参数,也可以子方法体中使用arguments来访问参数

这是因为arguments 是一种特殊对象,在函数代码中,表示函数的参数数组

正因为arguments表示参数组成的数组,因此,首先可以使用arguments。length检测函数的参数个数,其次可以通过下标arguments【index】来访问某个参数这样

可以用arguments对象判断传递给函数的参数个数并获取参数,适用于函数参数无法确定个数的情况下

function f(){

console.log("function");

}

function test(){
console.log(f);

f();

f="hello";

console.log(f);

f();

}

test();

上述代码运行后,输出结果为?

答案:

function

hello

string is not a function这是因为,定义函数时,函数名称作为一个全局变量,该变量指向函数对象,因此执行函数test中的第一行代码时,将输出变量f所对应的函数对象,即输出函数体重代码的字符串形式;然后执行f()表示调用方法f,则输出字符串function ;执行代码非“f=hello,意味着将变量f的值改为字符串因此在输出变量f时,将输出字符串hello;而如果试图在执行f()会引发错误,这是因为,此时变量f不再是一个函数对象,而是一个普通字符串