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上下文&#x