JavaScript基础强化笔记-ECMAScript 值与类型

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zjiang1994/article/details/79142003

JavaScript基础强化笔记-ECMAScript 值与类型

变量

  • 第一个字符必须是字母、_ 、$
  • 余下的字符可以是下划线、美元符号或者任何数字字符
  • 变量不必需要声明、未声明的变量是全局变量

ECMAScript中,变量可以存在两种类型的值: 原始值引用值

原始值 就是变量属于原始类型,因为原始类型的的空间固定,所以可以存储在
引用值 就是原始值之外的类型,他们存储在变量处的值是一个指针(point),真正的值存储在内存处


类型

概述

原始类型

5种原始类型
- Undefined
- Null
- Boolean
- Number
- String

typeof运算符用于判断一个值是否在某种类型的范围内。


详细

Undefined

  • Undefined 类型只有一个值,即undefined.
  • 当声明的变量未初始化时,该变量的默认值是undefined
    • 例如 var a
  • Undefined不等于未定义,等于未赋值

Null

  • Null类型也只有一个值->null
  • undefined实际上就是从null派生出来的,因此ECMAScript认为他们相等。
  • 虽然两值相等但是null表示对象不存在,undefined表示对象未赋值。

Boolean

  • Boolean类型是ECMAScript中最常见的类型之一。
  • 两个值true和false。
  • false不等于0但是必要时0也可以被转换为false。

Number

JavaScript只有一种数字类型,可以使用也可以不使用小数点来书写数字。

JavaScript不是类型语言,不定义不同类型的数字(整数、短、长、浮点)。

JavaScript中的所有数字都存储为根为10的64为(8比特),浮点数。

精度

  • 整数(不使用小数点或者科学记数法时):15位
  • 小数的最大位是17,但是浮点运算不是很准确

八进制和十六进制

  • 如果前缀为0,则会被识别为八进制
  • 如果前缀为0x则会被识别为十六进制

绝对不要在数字前面写零,除非你需要进行八进制转换

  • 既可以表示32位整数也可以表示64位浮点数
  • 0开头的为八进制,0x开头的为十六进制
  • 所有计算返回的值都为十进制
  • 要定义浮点数,必须包括小数点和小数点后的一位数字
  • 浮点值在计算之前真正存储的是字符串
  • ECMAScript默认把具有6个或6个以上的前导0的浮点数转换为科学记数法
    有几个特殊值也被定义为Number类型:
    • Number.MAX_VALUE 上边界
    • Number.MIN_VALUE 下边界
    • Number.POSITIVE_INFINITY 大于边界的值
    • Number.NEGATIVE_INFINITY 小于边界的值
    • Number.POSITIVE_INFINITY 无穷大
    • Number.NEGATIVE_INFINITY 无穷小
    • NaN 当一个对象转化为数组时,因为没有与它 相等的值就会返回NaN
    • NaN本身并不相等 NaN == NaN //false
    • 不推荐使用NaN本身,推荐使用isNaN()

String

  • 是唯一没有固定大小的原始类型。可以用字符串存储0或者更多的Unicode字符,用16位整数表示。

字面量 含义
\n 换行
\t 制表符
\b 空格
\r 回车
\f 换页符
\ 反斜杠
\’ 单引号
\” 双引号
\0nnn 八进制代码 nnn 表示的字符(n 是 0 到 7 中的一个八进制数字)
\xnn 十六进制代码 nn 表示的字符(n 是 0 到 F 中的一个十六进制数字)
\unnnn 十六进制代码 nnnn 表示的 Unicode 字符(n 是 0 到 F 中的一个十六进制数字)

类型转换

ECMAScript的Boolean值、数字和字符串的原始值的有趣之处在于他们都是伪对象,这意味着他们实际上具有属性和方法。

转换成数字:
- parseInt() 和 parseFloat()用来将字符串转换为数值
- 会从0位置依次转换,’1233asc’->’1233’、’s23232’->’NaN’
- parseFloat()转换为浮点型,但是必须为 十进制


强制类型转换

  • Boolean() 函数
  • Number() 函数 必须整完全可以转换否者NaN
  • String() 函数 和调用 toString() 方法的唯一不同之处在于,对 null 和 undefined 值强制类型转换可以生成字符串而不引发错误

关于类型转换

typeof只能判断JavaScript的5中原始类型,而且typeof作为运算符会有很多坑。

所以在判断对象时,最好使用 Object.prototype.toString.call()方法。
判断对象属于哪种内置对象类型。

Object.prototype.toString.call(123)会进行以下操作:

  1. 获取对象的类名:(对象类型)
  2. 将[Object、 获取的对象类型的名、]组合为字符串。
  3. 返回第二步的字符串’[object Array]’

因为JavaScript中一切都是对象,所有任何都可用:

console.log(Object.prototype.toString.call(123))    //"[object Number]"
console.log(Object.prototype.toString.call('123'))    //"[object String]"
console.log(Object.prototype.toString.call(undefined))    //"[object Undefined]"
console.log(Object.prototype.toString.call(true))    //"[object Boolean]"
console.log(Object.prototype.toString.call(null))    //"[object Null]"
console.log(Object.prototype.toString.call({}))    //"[object Object]"
console.log(Object.prototype.toString.call([]))    //"[object Array]"
console.log(Object.prototype.toString.call(function(){}))    //"[object Function]"

关于typeof

  • 对于null、数组、{}、正则表达式都返回object
  • 对于NaN返回’number’

猜你喜欢

转载自blog.csdn.net/zjiang1994/article/details/79142003