变量类型和计算

题目(答案见每题下方空白处)

  1.JS中使用typeof能够获得哪些类型正则表达式

  number、string、boolean、undefined、object、function数组

  2.什么时候使用===,什么时候使用==函数

  通常除了obj.a == null里建议用==(不然须要写obj.a === null || obj.a === undefined,节约代码量,jQuery原码这么写的),其余建议用===spa

  3.JS中的内置函数有哪些prototype

  这里指的是ECMAScript中的函数,包括Object、Array、Function、Boolean、Number、String、Date、RegExp、Error对象

  4.JS变量按照存储方式分为哪些类型,描述其特色ip

  基本类型和引用类型内存

  基本类型中的每一个值都放在内存中(栈内存),复制时复制的为值开发

  引用类型中的每一个值放在堆内存中,变量中保存的只是这个值的一个地址,复制的时候复制的为地址字符串

  5.如何理解JSON

  JSON也是JS中的一个内置对象,只不过其书写上的格式比较严格,有两个API:stringify(对象->字符串)和parse(字符串->对象)

  但另外一方面来讲,JSON也是一个数据格式

 

知识点

变量类型

基本类型和引用类型

  基本类型有stringnumberbooleanundefinednull,保存在栈内存

  用变量来给另外一个变量赋值时,变量获得的是,所以两个变量值发生变化时,另外一个变量的值不变

  而引用类型有arrayobjectfunction,保存在堆内存

  用变量给另外一个变量赋值时,实际上获得的是这个引用类型的一个地址,所以当其中一个变量值发生变化时,另外一个变量的值也变化

 

  能够理解成基本类型的值(数据量,直接放在内存中比较好,而引用类型数据量大,放在内存中不利于内存的使用,节约内存空间

typeof运算符

  对象、数组正则表达式null返回object,函数返回function,数字返回number,字符串返回string,布尔值返回boolean,undefined返回undefined

  因此对于基本类型,typeof区分比较好,可是对于引用类型,用instanceof比较好(是否为某个的实例)

万能方法

  instanceof实际上判断的是数据对象是否为某个数据类型构造函数实例,若是用'123' instanceof String,返回的也是false

  这里能够用Object原型上的toString方法来判断,也就是Object.prototype.toString.call(),输出的是一个数组,内容为Object 数据类型,全部的数据类型在判断的时候都没有问题

扩展——symbol类型

  ES6中新增了Symbol类型,用typeof返回symbol

  这里的symbol类型每次都生成一个不同的独立的值,也就是用===符号判断两个Symbol类型是永远不可能相等

  能够在构造Symbol实例的时候向其中传入一个字符串,查看该值的时候会以symbol(字符串)的形式返回,有利于咱们区分不一样的Symbol类型

  能够用在对象中,以防止对象的键值对被修改,但实际开发中还几乎没有用symbol类型的

 

变量计算

强制类型转换

  发生在如下几种状况中

  1. 字符串拼接(字符串+数字)
  2. ==运算符
  3. if语句
  4. 逻辑运算

   其中会被强制转换成false的有:0NaN"undefinednullfalse自己

 

JSON

  JSON也是JS中的一个内置对象(注意和内置函数区别,Math也是一个内置对象,内置函数是能够用new关键词构造实例的),只不过其书写上的格式比较严格

  JSON有两个API:stringify(对象->字符串)和parse(字符串->对象)

  但另外一方面来讲,JSON也是一个数据格式

相关文章
相关标签/搜索