js面试题5(数据类型)

js有哪些数据类型?
1、数值型(Number):整数和浮点数统称为数值。例如85或3.1415926等。
2、字符串型(String) 3、逻辑(布尔)型(Boolean):用true或false来表示。
4、空(null)值(Null):表示没有值,用于定义空的或不存在的引用。
要注意,空值不等同于空字符串"“或0。
null是空对象(Object)指针,”"是String类型,0是Number类型。
5、未定义(Undefined)值:它也是一个保留字。表示变量虽然已经声明,但却没有赋值。
除了以上五种基本的数据类型之外,JavaScript还支持复合数据类型,包括对象和数组两种。
6、还有在 ES6 中新增的 Symbol 类型,代表创建后独一无二且不可变的数据类型

数据类型检测的方法有哪些?
1.typeof:用来检测数据类型的运算符。返回值是一个字符串,然后包含了我们常用的数据类型,例如:“number”、“string”、“boolean”、“undefined”、“object”、“function”。typeof不能具体的细分对象、数组、正则等,因为不管检测哪一个返回的都是"object"。
2.instanceof:检测当前实例是否属于某一个类,属于的话返回true,不属于返回false,返回值是布尔值。(instanceof的局限性:只要在这个实例的原型链上的类,用instanceof检测的时候都为true在类的继承中,我们只是单纯通过instanceof来检测数据类型的话是不准确的) 3.var a =“aaa"console.log(a.constructor===String)//true(constructor可以让用户自己来修改,所有我们一般不用这个来检测)
4. toString检测数据类型(常用而且相对来说精准的检测方式,上述方式出现的缺陷在这里都弥补了。原理:在Object.prototype上有一个toString方法,这个方法执行的时候,会返回方法中this关键字对应数据值的数据类型,这样的话,我们就可以让Object.prototype.toString执行,并且通过call/apply来改变里面的this关键字,也就是想检测谁的数据类型,我们就可以让this变为谁。Object.prototype.toString.call(12) ->检测12的数据类型 ->”[object Number]“Object.prototype.toString.call(“zhufeng”) ->”[object String]"

判断数组的方法有哪些?
1.从原型入手:Array.prototype.isPrototypeOf(obj);
2.从构造函数入手:obj instanceof Array。先说说 typeof 和 instanceof 的区别?两者都可以用来判断变量,typeof会返回基本类型,而instanceof只会返回一个布尔值。该方法也可以利用对象的constructor属性,例如:typeof arr == “object” && arr.constructor == Array;先判断变量是对象再进一步判断数组。
3. 跨原型链调用toString():Object.prototype.toString.call(obj)4. ES5新增的方法:Array.isArray(要判断的数组)

执行上下文是什么?https://www.cnblogs.com/echolun/p/11438363.html
执行上下文有且只有三类,全局执行上下文,函数上下文,与eval上下文;由于eval一般不会使用࿰

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值