js经典试题之数据类型
js经典试题之数据类型
1:输出"B" + "a" + + "B" + "a"的值:
答案:BaNaNa。
分析:因为+"B"的意思就是把这个字符串转化为数字,但是因为"B"不能转化为数字,所以只能变成NaN(not a number)了。
  另外因为字符加上任意类型都会把后⾯的类型转化为字符,使得 NaN 变成了"NaN"
2:[] == [] 的值为?
答案:false。
分析:当两个值都是对象 (引⽤值) 时, ⽐较的是两个引⽤值在内存中是否是同⼀个对象. 因为此 [] ⾮彼 [], 虽然同为空数组, 确是两个互不相关的空数组, ⾃然 == 为 false。
3: [] == ![] 的值为?
答案:true
分析:解释这个“等式”⾄少要四句话,涉及到了 JavaScript 的运算符优先级、宽松相等(即 ==)的判断过程以及强制类型转换
1. 等号右边有 ! ,优先级⽐ == 更⾼,优先计算右边的结果。 [] 为⾮假值(参考,什么是假值:),所以右边的运算结果为 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"javascript全局数组
typeof undefined    //"undefined"
number、string、boolean、undefined、object、function、symbol
7:javascirpt中的数字在计算机内存储为多少Byte?
答案:8Byte
解析:
1.Javascript中,由于其变量内容不同,变量被分为基本数据类型变量和引⽤数据类型变量。基本类型
变量⽤⼋字节内存,存储基本数据类型(数值、布尔值、null和未定义)的值,引⽤类型变量则只保存对对象、数组和函数等引⽤类型的值的引⽤(即内存地址)。
2. JS中的数字是不分类型的,也就是没有byte/int/float/double等的差异。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。