美文网首页
JS 数据类型

JS 数据类型

作者: simplue | 来源:发表于2018-11-05 00:08 被阅读0次

JavaScript 共有7种数据类型,分别是

  • 数值(number):整数和小数如 1,1.2等
  • 字符串(string):文本如 “JavaScript”等
  • 布尔值(boolean):只有两个值 true(真)false(假)
  • undefined:表示“未定义”,空或不存在
  • null:表示空值
  • 对象(object):各种值组成的集合
  • symbol:es6的新增数据类型,这里不做介绍

使用typeof获取数据类型,需要注意的是函数的数据类型输出虽然是“function”,但其数据类型是“object”,null的类型输出虽是object,但实际上是null

// 查看数据类型
typeof 1
"number"
typeof 'hi'
"string"
typeof false
"boolean"
typeof undefined
"undefined"
typeof null
"object"
typeof {}
"object"
typeof []
"object"
typeof function(){}
"function"  
typeof Symbol()
"symbol"

undefined 和 null

两者实际上都表示没有(也许可以说是一种设计错误了),而undefined则一般出现在未赋值的变量,未定义的属性,无返回值的函数返回值(或返回值是未传入的参数),下面是输出参考:

// 未赋值变量
var x
undefined
x
undefined

// 无返回值
(function() {return})()
undefined

// 返回值是未传入的参数
(function(unpass) {return unpass})()
undefined

// 未定义属性
var emptyObj = {}
undefined
emptyObj.prop
undefined

// == 情况下与null相等
undefined == null
true

// bool判断
Boolean(null)
false
Boolean(undefined)
false

// 代表数值
Number(null)
0
Number(undefined)
NaN

boolean

布尔值,只有truefalse两种状态,只有在以下几种情况下才会判断为false

  • undefined
  • null
  • false
  • 0
  • 非数字:NaN
  • 空字符串:""'' 或 ``
Boolean(NaN)
false
Boolean(undefined)
false
Boolean(null)
false
Boolean(0)
false
Boolean(-1)
true
Boolean('')
false
Boolean("")
false
Boolean(``)
false

number

JavaScript 内部,所有数字都是以64位浮点数形式储存,即使整数也是如此。所以,1与1.0是相同的,是同一个数。

1 === 1.0
true

数字的表示和进制

// 次方
Math.pow(2, 3)
8

// 科学计数法
2e3
2000

2 * Math.pow(10, 3)
2000

// Number 可表示的范围
Number.MAX_VALUE
1.7976931348623157e+308

Number.MIN_VALUE
5e-324

// 16进制
0x10
16
// 8进制
0o10
8
// 2进制
0b10
2
// 不建议的8进制表示法,以0开头(浏览器为兼容旧代码的处理,将以0开头的数字识别为8进制,在es5的严格模式和es6中已废除)
010
8

NaN(Not a Number),NaN与任何数(包括它自己)的运算,得到的都是NaN。

// NaN的判断
typeof NaN
"number"

NaN === NaN
false

isNaN(NaN)
true

// 运算
NaN + 1
NaN

NaN + NaN
NaN

Infinity,无穷,有正无穷和负无穷

1 / 0
Infinity

1 / -0
-Infinity

parseInt,通常用于将字符串转换为整数;parseFloat,通常用于将一个字符串转为浮点数

parseInt('9')
9

// 先转字符串再parse
parseInt(9)
9

// 2进制输出10进制
parseInt('1000', 2)
8

// 超出进制范围
parseInt('2', 2)
NaN

isFinite,用于检查值是否是一个有限数值(finite number)。在必要情况下,参数会首先转为一个数值。

isFinite(Infinity)
false
isFinite(-Infinity) 
false
isFinite(NaN)
false
isFinite(undefined)
false
isFinite(null)
true
isFinite(-1)
true

object

对象,JavaScript中最重要的也是最常用的数据类型。与Python中的字典有类似之处。简单的说就是键值不重复的键值对。

// 定义
var obj = {}

// 属性赋值
obj.foo = 'foo'

obj['bar'] = 'bar'

obj
{foo: "foo", bar: "bar"}


// 属性获取
obj.foo
"foo"

obj['bar']
'bar'

// 属性删除
delete obj.foo
true

obj
{bar: "bar"}

// 查看属性
Object.keys(obj)
["bar"]

// 判断是否包含属性
'bar' in obj
true

'foo' in obj
false

// 遍历属性
for (var attr in obj) {
    console.log(typeof attr, attr)
    console.log(typeof obj[attr], obj[attr])
}
string bar
string bar

string

字符串,即文本。

// 定义与表示
var 
  hiText = 'hi', 
  specialCharacterText = 'say \'hi\'',  // “\”用于符号转义 使用“\\”表示“\”
  multiLineText = 'a'  // 多行字符串,
                + 'b'
  unicodeText = '\u4f60'  // unicode表示

我们还需要知道,每个字符在 JavaScript 内部都是以16位(即2个字节)的 UTF-16 格式储存。也就是说,JavaScript 的单位字符长度固定为16位长度,即2个字节。

但是,UTF-16 有两种长度:对于码点在U+0000到U+FFFF之间的字符,长度为16位(即2个字节);对于码点在U+10000到U+10FFFF之间的字符,长度为32位(即4个字节),而且前两个字节在0xD800到0xDBFF之间,后两个字节在0xDC00到0xDFFF之间。举例来说,码点U+1D306对应的字符为𝌆,它写成 UTF-16 就是0xD834 0xDF06。

JavaScript 对 UTF-16 的支持是不完整的,由于历史原因,只支持两字节的字符,不支持四字节的字符。这是因为 JavaScript 第一版发布的时候,Unicode 的码点只编到U+FFFF,因此两字节足够表示了。后来,Unicode 纳入的字符越来越多,出现了四字节的编码。但是,JavaScript 的标准此时已经定型了,统一将字符长度限制在两字节,导致无法识别四字节的字符。上一节的那个四字节字符𝌆,浏览器会正确识别这是一个字符,但是 JavaScript 无法识别,会认为这是两个字符。

——阮一峰JavaScript教程-字符串

'𝌆'.length
2

参考链接:
阮一峰JavaScript教程

相关文章

  • JS的类型转换

    JS的数据类型: 首先, JS的数据类型分为基本数据类型和引用数据类型基本数据类型: string number ...

  • js对象数组的深拷贝方法以及其他方法

    js判断数据类型是否为对象 js判断数据类型是否为数组

  • 2022前端面试题汇总(附答案)更新中

    JS相关 1.JS中的数据类型 (1)数据类型分为基本数据类型和引用数据类型基本数据类型:number、null、...

  • js深拷贝

    在写深拷贝之前,有必要说一下js的数据类型 一.js数据类型 1.1 分类 js数据类型分为两类:原始数据类型、引...

  • js数据类型

    JS基本数据类型和引用数据类型(JS 基本数据类型和引用数据类型的区别及浅拷贝和深拷贝) 再讲 js 的基本数据类...

  • js入门知识点

    * 基础知识 * js的输出方式 * js的组成 * js的命名规范 * 数据类型 * number数据类型 * ...

  • js常见知识点

    一、 js基本数据类型和引用数据类型 js基本数据类型:Number、String、Boolean、Null、un...

  • JS数据类型判断

    js中可以通过typeof来判断基本的数据类型。 数据类型 js的数据类型分为基本数据类型和引用数据类型,基本数据...

  • JS 高频面试题汇总

    # 说一下JS 中的数据类型有哪些 JS 数据类型包括 基本 / 引用 / 特殊 数据类型: 基本数据类型:Str...

  • 浅拷贝和深拷贝

    JS数据类型 在JS语言中,数据类型分为以下两种: 基本数据类型:null undefined number st...

网友评论

      本文标题:JS 数据类型

      本文链接:https://www.haomeiwen.com/subject/yqydxqtx.html