资讯专栏INFORMATION COLUMN

浅谈JS中的数据类型

lufficc / 2442人阅读

摘要:中的每一个值,都是一种数据,属于一种数据类型。数值的数值有许多种表示类型。对象这是中最核心的概念,也是最复杂的数据类型。对象的每一个键名又称为属性,它的键值可以是任何数据类型。特例函数返回,但是我们要注意并没有这一数据类型。

JS中的数据类型。什么是数据类型?

和我们平时交流一样一样。
什么是汉字,什么是拼音,什么是标点符号,什么又是现在流行的表情包?类型,可以是语言的分类,也一定是理解一门语言或了解一个事物的基础。

JavaScript中的每一个“值”,都是一种数据,属于一种数据类型。
我们常用的数据类型,有六种:

number:数值,包括整数与小数

string:字符串,理解为文本

boolean:布尔值,只有两个值:truefalse,分别表示真假

undefined:未定义或不存在

null:空值,此处为空

object:对象,各种值的集合

在ES6中引入了第七种类型的值:symbol

数值、字符串和布尔值一般被称为原始类型,是最基础的类型;对象被称为合成类型,是比较复杂的类型。undefinednull是特殊的值。

数值

JavaScript的数值有许多种表示类型。

常规的十进制:首数字不为0。 520
二进制:前缀为0b0B0b101
八进制:前缀为0o0O0o363
十六进制:前缀为0x0X0xdd
科学计数法:字母e或E后面接整数表示指数部分。314e-3

NaN是一种特殊的数值,表示"非数字"。

字符串

字符串就是排在一起的多个字符,用英文双引号"或单引号"表示。

双引号内部可以引用单引号,单引号内部也可以引用双引号。
当引号使用出现歧义时,比如单引号中的单引号,双引号中的双引号,就要用到转义
反斜杠 可以用来表示一些特殊字符,被称为转义符

常见的转义符有:

:换行符

:制表符

:回车键

:后退键

":单引号

":双引号

:反斜杠

null 和 undefined

对于nullundefined,都可以表示没有,含义相似。这也与历史上JavaScript的设计有关。

大致可以像下面这样理解。

null表示空值,即该处的值现在为空。
比如调用函数时,某个参数未设置任何值,这时就可以传入null,表示该参数为空。

undeined则表示此处未定义,不存在。

布尔值

true为真,false为假。
布尔值运算关系有 “与”:&&和 “或”:||,真值关系符合标准真值表。

对象

这是JavaScript中最核心的概念,也是最复杂的数据类型。
对象就是一组“键值对”即key-value的集合,是一种无序的复合数据集合。

var obj= {
  k1 : "My",
  k2 : "Love",
  k3 : 18,
  k4 : undefined,
  k5 : {k6 : "998"}
};

每一个键值对用逗号,隔开。
冒号左边为键名,默认为字符串,加不加引号都可以。
但若键名不符合标识名规则,则必须加上引号,否则会报错。 "3+4" "678xyz"
对象的每一个键名又称为“属性”,它的“键值”可以是任何数据类型。如果一个属性的值为函数,通常把这个属性称为“方法”,它可以像函数那样调用。

读取对象的属性,有两种方法,一种是使用点运算符,还有一种是使用方括号运算符。

obj.k1;
obj["k1"];

如果使用方括号运算符,键名必须放在引号里面,否则会被当作变量处理。

这种方法不仅可以用来读取值,还可以用来赋值。

var obj = {};
obj.k1 = "998";
obj["k2"] = undefined;

可以使用Object.keys来查看一个对象本身的所有属性。

var obj = {
  k1 : "uux",
  k2 : 18
};

Object.keys(obj);
//["k1","k2"]

可以用delete命令删除对象的属性,删除成功后返回true

var obj = {
  k1 : "123",
  k2 : "234"
};

delete obj.k1;   //true
obj.k1;   //undefined
Object.keys(obj);   //["k2"]

in用于检查对象是否包含某个属性,如果包含就返回true,否则返回false。

var obj = {};

"k1" in obj;   //false

for...in循环用来遍历一个对象的全部属性。

var obj = {
  k1 : "Male",
  k2 : 18, 
  k3 : undefined
};

for (var i in obj) {
  console.log("Key:", i);
  console.log("Value:", obj[i]);
}
// Key:k1
// Value:"Male"
// Key:k2
// Value:18
// Key:k3
// Value:undefined
typeof运算符

typeof运算符可以返回一个值的数据类型。

typeof 998;   //"number"
typeof "998";   //"string"
typeof true;   //"boolean"
typeof undefined;   //"undefined"
typeof {};   //"object"
var a = {};
typeof a;   //"object"
特例:
function xxx() {};
typeof xxx;   //"function"

函数返回function,但是我们要注意并没有function这一数据类型。

typeof null;   //"object"

这只是一个BUG,是由历史原因造成的。

typeof [];   //"object"

空数组的类型也是object

typeof document;   //"object"
typeof window;   //"object"
...



参考文献:《JavaScript教程——阮一峰》

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/100177.html

相关文章

  • 浅谈JS中的数据类型转换

    摘要:关于中的各种数据类型的简单转换。转换为布尔值全局方法方法注意要区分空字符串和有空格的字符串。如果预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。常规转换取反两次,对应的布尔值不变。 关于JavaScript中的各种数据类型的简单转换。 转换为字符串 toString 可以用toString这个API将其他数据类型转换为字符串,其中也有一些特例。 var a = 1; a....

    CarlBenjamin 评论0 收藏0
  • 浅谈ES6中基本数据类型的操作方法

    摘要:值得注意的是,中整数和浮点数采用的是同样的储存方法位双精度浮点数,所以和被视为同一个值。 在Javascript中,数据类型分为基本数据类型和引用数据类型两大类,其中,Array和Function在本质上仍然是一种特殊的对象: 基本类型: String / Number / Boolean / Null / Undefined引用类型: Object / Array / Functio...

    longmon 评论0 收藏0
  • 浅谈node.js中的stream(流)

    摘要:在可读流事件里我们就必须调用方法。当一个对象就意味着我们想发出信号这个流没有更多数据了自定义可写流为了实现可写流,我们需要使用流模块中的构造函数。我们只需给构造函数传递一些选项并创建一个对象。 前言 什么是流呢?看字面意思,我们可能会想起生活中的水流,电流。但是流不是水也不是电,它只是描述水和电的流动;所以说流是抽象的。在node.js中流是一个抽象接口,它不关心文件内容,只关注是否从...

    elliott_hu 评论0 收藏0
  • 浅谈vuex

    摘要:概念浅谈是一个专为应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。更改的中的状态的唯一方法,类似。允许我们将分割成模块。 通过购物车的一个案列,把vuex学习了一篇。 vuex概念浅谈 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以...

    chaos_G 评论0 收藏0
  • 浅谈:快速理解JS的原型与原型链

    摘要:中有基本类型和复杂类型的区分。原型与原型链这里,就引入了两个新的概念。原型对象就是用来存放声明对象中共有的那部分属性。而原型对象自身也是一个对象,它也有自己的原型对象。这样层层上溯,就形成了一个类似链表的结构,这就是原型链。 JavaScript中有基本类型和复杂类型的区分。 当我们在声明一个基本类型时: var n1= 1; console.log(n1); //1 这时我们可以用N...

    ZoomQuiet 评论0 收藏0

发表评论

0条评论

lufficc

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<