js学习笔记:数据类型

语法

  • js的标识符第一个字符必须是字母,下划线或$,不能是数字
  • 严格模式:
    在整个脚本或函数顶部:“use strict”
  • 在语句结尾加上分号有助于增进代码性能,因为这样解析器就不必再花时间推测在哪里插入分号了。

变量

  • 未经初始化的变量的值为undefined
  • 省略var操作符会创建一个全局变量;但给未经声明的变量赋值在严格模式下会抛出ReferenceError错误

数据类型

5种简单数据类型:undefined、null、Number、String、Boolean
1中复杂数据类型:Object

typeof操作符

用来检测给定变量的数据类型,返回字符串。

  • “undefined”值未定义
  • “boolean” 布尔值
  • “string” 字符串
  • “number” 数值
  • “object” 对象或null
  • “function” 函数

typeof不是函数,是个操作符,因此可以不加圆括号直接使用 :typeof 95,操作数可以是变量也可以是数值字面量。

typeof null = “object”,null被认为是一个空的对象引用。

Undefined
  • 只有一个值,即undefined。使用var声明变量但未对其初始化时,此变量值为undefined。
  • 连声明都没有声明的变量值不是undefined,但typeof 一个未声明的变量会得到undefined值。
Null
  • 也是只有一个值,即null。null表示一个空对象指针,因此用typeof检测会返回“object“。
  • 如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null,这样直接检查null值就可以知道相应的变量是否已经保存了一个对象的引用。
  • null == undefined 结果为true
Boolean
  • 将一个值转换为Boolean,可以调用转型函数Boolean()
    • String :非空字符串为true,“”为false
    • Number:非零数字值(包括无穷大)为true,0和NaN为false
    • Object: 任何不为null的对象为true,null为false
    • Undefined:为false
Number
  • 八进制数第一位为0,十六进制前两位为0x
  • 浮点数
    • 保存浮点数需要的内存空间是保存整数值的两倍,因此当小数点后面没有数字或者小数为1.0,该值会被转换成整数。
    • 浮点数的最高精度是17位小数,因此进行小数计算时结果不准确,因此永远不要测试某个特定的浮点数值。
  • 数值范围
    • 超出js数值范围的值,正的为Infinity,负的为-Intinity。正负Infinity都不能再参与下次计算。
    • 要确定数值是否为有穷,可以使用isFinite()函数,这个函数在参数位于最小与最大数值之间时会返回true。
  • NaN

    • 用于表示一个本来要返回数值的操作数未返回数值的情况。如0/0,js会返回NaN。
    • 任何涉及NaN的操作都会返回NaN。
    • NaN与任何值都不等,包括NaN本身。NaN == NaN,结果为false
    • isNaN()函数,如果该参数能被转换为数值,则返回false。
      • isNaN(“blue”)=true
      • isNaN(NaN)= true
      • isNaN(true)= false
        isNaN函数也适用于对象,首先调用对象的valueOf()方法,确定该方法返回的值能否转换为数值,若不能再调用toString方法,再测试返回值。
  • 数值转换

    • Number()函数用于各种数据类型。+操作符的操作与Number函数相同。
      • Boolean值,true为1,false为0
      • null值,返回0
      • undefined,返回NaN
      • String:
        • 只包含数字(包括前面带正负号),则转换为十进制
        • 包含有效的浮点格式,如“1.1”,则转换为浮点数值
        • 包含有效的十六进制,如“0xf”,则转换为相同大小的十进制数值
        • 空字符串转换为0
        • 上述格式之外的其他格式,转换为NaN
      • Object,先调用valueOf方法,然后依照前面的规则转换返回值,若结果为NaN,则调用toString方法,然后依照前面的规则转换返回的字符串。
    • parseInt()函数用于把字符串转换为数值。
      • 函数会找到第一个非空格字符,如果不是数字字符或者负号,就会返回NaN。因此空字符串会返回NaN,而Number()处理空字符串则会返回0.
      • 如果第一个是数字字符,parseInt会继续解析第二个,直至解析完所有或遇到非数字字符。因此“1234blue”会被转换成1234,“22.5”会被转换成22.
      • parseInt能正确识别出各种整数格式,字符串以“0x”开头且后跟数字字符会被转化成十六进制数,字符串以0开头且后跟数字字符会被转换成八进制数。(但在ecmascript 5中貌似不适用了)
      • 为了解决进制的困惑,parseInt提供第二个参数表明转换时的进制,2,8,10,16。如果指定了16为参数,字符串可以不带前面的0x。
    • parseFloat与parseInt类似,但会解析字符串中的第一个小数点,但第二第三个小数点就无效了。如“22.34.5”会被解析成22.34 。
      • parseFloat只解析十进制。因此会忽略前导的0
      • 若字符串包含的是一个可解析为整数的数,则parseFloat会返回整数。
String
  • 字符串的长度可以通过length属性获得
  • js中的字符串是不可变的。也就是说字符串一旦创建,值就不能改变,要改变只能是销毁原来的字符串再重新赋值,不过这都是在后台发生的。
  • 转换为字符串:
    • toString方法null和undefined没有这个方法
      • 调用数值的toString方法时,可以传递一个代表进制的参数2,8,10,16,这样返回的字符串值将是对应进制下的字符串值。
    • 转型函数String()
      • 如果值有toString方法,则调用
      • 如果值是null,返回“null”
      • 如果值是undefined,返回“undefined”
        因为null和undefined没有toString方法,因此返回字面量值、
Object

Object的每个实例都有下列属性和方法:

  • constructor:保存着用于创建当前对象的函数
  • hasOwnProperty(propertyName):检查给定的属性是否在当前实例中(而非原型)。
  • isPrototypeOf(object):检查传入的对象是否为当前对象的原型。
  • propertyIsEnumerable(propertyName):检查给定的属性能否使用for-in来枚举
  • toLocaleString():返回对象的字符串表示,与执行环境的地区对应
  • toString():返回对象的字符串表示
  • valueOf():返回对象的字符串、数值或布尔值,通常与toString方法的返回值相同。

由于Object是所有对象的基础,因此所有对象都具有这些基本的属性和方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值