js经典试题之数据类型

js经典试题之数据类型

1:输出"B" + "a" + + "B" + "a"的值:

答案:BaNaNa。

分析:因为+"B"的意思就是把这个字符串转化为数字,但是因为"B"不能转化为数字,所以只能变成NaN(not a number)了。

     另外因为字符加上任意类型都会把后面的类型转化为字符,使得 NaN 变成了"NaN"

  

2:[] == [] 的值为?

答案:false。

分析:当两个值都是对象 (引用值) 时, 比较的是两个引用值在内存中是否是同一个对象. 因为此 [] 非彼 [], 虽然同为空数组, 确是两个互不相关的空数组, 自然 == 为 false。

3: [] == ![] 的值为?

答案:true

分析:解释这个“等式”至少要四句话,涉及到了 JavaScript 的运算符优先级 、宽松相等(即 ==)的判断过程以及强制类型转换

 1. 等号右边有 ! ,优先级比 == 更高,优先计算右边的结果。 [] 为非假值(参考,什么是假值:Falsy - Glossary),所以右边的运算结果为 false,即:

![] ==> false  // 此处表示转换过程,下同

2. == 的任意一边有 boolean 类型的值时先把这个值转换成 number 类型,右边转换成了 0 ,即:

Number(false) ==> 0

3. == 的两边分别是 number 和 object 类型的值时,把 object 转换成 number 类型,需要对 object 进行 ToNumber 操作,即:

Number([].valueOf()) ==> 0

4. 至此,== 两边的值都变成 0 了,显然是成立的

4:列举js的数据类型:

答案:

基本数据类型:Number,String,Boolean,Undefined,Null

复杂数据类型:Object,Array,Function,RegExp,Date,Error

全局数据类型:Math

5:null == undefined的值?

答案:true。

分析:undefined值是通过null派生出来的,==时它会自动转化为null,所以返回true。不过如果用严格比较符===,不发生转化,将返回false。

6:下面哪些属于JavaScript的typeof运算符的可能结果:

typeof Symbol()    //"symbol"
typeof Number()    //"number"
typeof String()    //"string"
typeof Function()    //"function"
typeof Object()    //"object"
typeof Boolean()    //"boolean"
typeof null    //"object"
typeof undefined    //"undefined"

number、string、boolean、undefined、object、function、symbol

7:javascirpt中的数字在计算机内存储为多少Byte?

答案:8Byte

解析:

1.Javascript中,由于其变量内容不同,变量被分为基本数据类型变量和引用数据类型变量。基本类型变量用八字节内存,存储基本数据类型(数值、布尔值、null和未定义)的值,引用类型变量则只保存对对象、数组和函数等引用类型的值的引用(即内存地址)
2. JS中的数字是不分类型的,也就是没有byte/int/float/double等的差异。
原文地址:https://www.cnblogs.com/momozjm/p/7755554.html