JavaScript 常见面试题分析( 一 )
2018-07-02 本文已影响22人
哼_
这篇文章完全是copy Nian糕 的文章,写这只是为了领会知识
01 JavaScript 中使用 typeof 能得到的类型有哪些?
这道题考察的是JS的变量类型,js的变量类型有 值类型 和 引用类型 两种,
值类型包括 undefined 字符串 数字 布尔值
引用类型包括 对象 数组 函数
- null 是object 对象,一个空的指针,并没有指向任何真实的引用类型
- typeof 只能区分值类型的详细类型
- typeof 能区分函数
02 什么时候用 === 什么时候用== ?
这道题考察的是强制类型转换, 而在 JS 当中,在进行字符串拼接 | == 运算符 | if 语句 | 逻辑运算时会发生类型转换
运行结果1运行结果2
运行结果3
判断一个变量会被当做true 还是 false ,可以用两个!! 进行判断
运行结果4
在JQuery 源码中, 所有的 if 判断,都是使用 === , 除了下面这种情况, 这里相当于 obj.a===null || obj.a===undefined 的简写形式
if(obj.a == null){
...
}
03 JS中有哪些内置函数 ?
这道题考察的是数据封装类对象, 常见的内置函数有 Object Array Boolean Number String Function Date RegExp Error
04 JS 变量按照存储方式区分为哪些类型 ? 并描述其特点
// 值类型
var a = 100 ;
var b = a ;
a = 200 ;
console.log(b) // 100
// 引用类型
var a = { age: 20}
var b = a;
b.age = 21;
console.log(a.age) // 21
特点: 值类型可以把数值分块存储在内存中 ; 引用类型则是好几个变量公用一个内存块, 他是一个变量指针的赋值,不是一个真正的拷贝.
05 如何理解JSON
JSON是一个数据格式,也是一个JS对象,JSON常用的两个API 如下
把对象转换成字符串
JSON.stringify ( { a : 10, b : 20 } )
把对象转换成对象
JSON.parse( ' { "a" : 10 , "b" : 20} ' )
判断是否是数组类型06 如何准确判断一个变量是数组类型 ?
07 写一个原型链继承的例子
08 描述 new 一个对象的过程
- 创建一个新对象 ;
- this 指向这个新对象 ;
- 执行代码,就是对 this 赋值 ;
- 返回 this ;
function Human(age,name){
this.age = age;
this.name = name;
this.food = '年糕';
// return this 默认有这一行代码
}
var h1 = new Human("李泽言",21);
var h2 = new Human ("白起",23);
递归
function rect(num){
if num==1 return 1
return num*rect(num-1)
}
返回结果
如果对递归还想有更深的理解,可以参考廖雪峰关于递归函数的解释