JavaScript 定义了几种数据类型? 哪些是原始类型?哪些是复杂类型?原始类型和复杂类型的区别是什么?
JavaScript的数据类型,共有六种。
数值(number):整数和小数(比如1和3.14)
字符串(string):字符组成的文本(比如"Hello World")
布尔值(boolean):true(真)和false(假)两个特定值
undefined:表示“未定义”或不存在,即此处目前没有任何值
null:表示空缺,即此处应该有一个值,但目前为空
对象(object):各种值组成的集合
除了对象(object)是复杂类型,其余都是原始类型。
复杂类型可以包括多个原始类型。
typeof和instanceof的作用和区别?
typeof返回值是一个字符串,该字符串说明运算数的类型。
typeof一般只能返回如下几个结果:number,boolean,string,function,object,undefined。
我们可以使用typeof来获取一个变量是否存在,如if(typeof a!="undefined"){alert("ok")},而不要去使用if(a)因为如果a不存在(未声明)则会出错,对于Array,Null等特 殊对象使用typeof一律返回object,这正是typeof的局限性。
所以我们要判断一个对象是否是数组时或者判断某个变量是否是某个对象的实例则要选择用instanceof运算符。
如何判断一个变量是否是数字、字符串、布尔、函数
判断是否为数字 typeof a === "number"
判断是否为字符串 typeof a === "string"
判断是否为布尔 typeof a === "boolean"
判断是否为函数 typeof a === "function"
NaN是什么? 有什么特别之处?
NaN 属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。可以把 Number 对象设置为该值,来指示其不是数字值。
如何把非数值转化为数值?
- parseInt()和parseFloat()两个转换函数;
- Number()的强制类型转换;
- 利用js变量弱类型转换
<script>
var str= '012.345 ';
var x = str-0;
x = x*1;
</script>
==与===有什么区别
=== 判断规则
- 如果类型不同,就[不相等]
- 如果两个都是数值,并且是同一个值,那么[相等];(!例外)的是,如果其中至少一个是NaN,那么[不相等]。(判断一个值是否是NaN,只能用isNaN()来判断)
- 如果两个都是字符串,每个位置的字符都一样,那么[相等];否则[不相等]。
- 如果两个值都是true,或者都是false,那么[相等]。
- 如果两个值都引用同一个对象或函数,那么[相等];否则[不相等]。
- 如果两个值都是null,或者都是undefined,那么[相等]。
== 判断规则:
- 如果两个值类型相同,进行 === 比较。
- 如果两个值类型不同,他们可能相等。根据下面规则进行类型转换再比较:
- 如果一个是null、一个是undefined,那么[相等]。
- 如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。
- 如果任一值是 true,把它转换成 1 再比较;如果任一值是 false,把它转换成 0 再比较。
- 如果一个是对象,另一个是数值或字符串,把对象转换成基础类型的值再比较。对象转换成基础类型,利用它的toString或者valueOf方法。js核心内置类,会尝试valueOf先于toString;例外的是Date,Date利用的是toString转换。
- 任何其他组合,都[不相等]。
break与continue有什么区别
break是结束整个循环体,continue是结束单次循环
void 0 和 undefined在使用场景上有什么区别
因为void 0永远返回undefined;
而undefined可以被重写,undefined其实是window的一个属性,可以给它赋值,这样undefined就不再是undefined了。
所以理解上,尽量使用void 0保证兼容性。
网友评论