前端面试知识点----基础javascript篇(2)

1.js的数据类型

js基本有5种简单的数据类型:String,Number,Boolean,Null,Undefined
引用数据类型:Object,Array,Function

2.判断数据类型的方法

typeof
优点:能够快速区分基本数据类型
缺点:不能区分Object , Array , Null,都返回object

console.log(typeof true);            // boolean
console.log(typeof 'str');           // string
console.log(typeof undefined);       // undefined
console.log(typeof []);              // object 
console.log(typeof {});              // object
console.log(typeof function(){});    // function
console.log(typeof null);            // object

instanceof
优点:能够区分Array , object ,Function,适合用于判断自定义的类的实例对象
缺点:Number , Boolean , String 不能判断

console.log(true instanceof Boolean);                // false 
console.log('str' instanceof String);                // false  
console.log([] instanceof Array);                    // true
console.log(function(){} instanceof Function);       // true
console.log({} instanceof Object);                   // true

object.prototype.toString.call()
优点:精准判断数据类型
缺点:写法繁琐,建议封装后使用

var toString = Object.prototype.toString;

console.log(toString.call(true));                   //[object Boolean]
console.log(toString.call('str'));                  //[object String]
console.log(toString.call([]));                     //[object Array]
console.log(toString.call(function(){}));           //[object Function]
console.log(toString.call({}));                     //[object Object]
console.log(toString.call(undefined));              //[object Undefined]
console.log(toString.call(null));                   //[object Null]

3.var , let , const 的区别

var:声明的变量,作用域为 该语句所在的函数内存在变量提升。
let : 声明的变量,其作用域为 该语句所在的代码块内不存在变量提升 。
(let为es6新添加申明变量的命令)
const 声明的变量不允许修改 。

4.js的作用域的理解

js的作用域分为 全局作用域函数作用域 。函数作用域中定义的变量,只能在函数内部调用,外界无法访问,因为没有块级作用域导致 if , for 等逻辑语句中定义的变量可以被外部访问,因此 es6 中新增了 letconst 来进行块级作用域的申明 。

5. == 和 === 区别

== : 俩边类型不同时,要先进行类型转换,在比较
=== :不做类型转换,类型不同时不相等

console.log(null==undefined)   //true
console.log(null===undefined)   //false

undefined值是派生自null值的,ECMAScript标准规定对二者进行相等性测试要返回true

==类型转换过程:

  1. 类型不同,进行转换
  2. nullundefined,返回true
  3. stringnumber ,将字符串转化为 number
  4. 一方为boolean , 转为number
  5. objectstring , number ,symbol ,转换为原始类型进行比较

你可能感兴趣的:(前端面试题,javascript,面试)