Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JavaScript语言类型 #77

Open
HuYuee opened this issue Dec 11, 2019 · 0 comments
Open

JavaScript语言类型 #77

HuYuee opened this issue Dec 11, 2019 · 0 comments
Assignees

Comments

@HuYuee
Copy link
Owner

HuYuee commented Dec 11, 2019

从MDN上面最新的资料来看是8种数据类型:

Boolean (布尔类型)

布尔表示一个逻辑实体,可以有两个值:truefalse

Null 类型

Null 类型只有一个值: null

作者设计的初衷是针对**可变类型(Object)**的初始值。

null表示"没有对象",即该处不应该有值,也可以理解为这个是一个空对象

Undefined 类型

一个没有被赋值的变量的类型是undefined。

作者设计的初衷是针对不可变类型的初始值。

如果方法或者是语句中操作的变量没有被赋值,则会返回undefined

注意:undefined 和报错ReferenceError: y is not defined是两种场景。看下面的例子大家就明白了

var x;
console.log(x);// undefined
console.log(y);// ReferenceError: y is not defined

Number 类型

可以对其运行数学运算的值(使用浮点格式)

注意:在一些小数的计算的时候会出现精度丢失问题,在下面的章节我会具体讲解

BigInt类型

BigInt 是一种内置对象,它提供了一种方法来表示大于 2^53 - 1 的整数。这原本是 Javascript中可以用 Number 表示的最大数字。BigInt 可以表示任意大的整数。

String 类型

简单的文本类型。

注意:因为string属于不可变类型,所以一切的string操作方法都会创建新的字符串。意味着你修改完之后都需要重新赋值

var str = 'abc123';
console.log(str.substring(0,3)); //abc
console.log(str); //abc123

Symbol 类型

每个从Symbol()返回的symbol值都是唯一的。

const symbol1 = Symbol();
const symbol2 = Symbol(42);
const symbol3 = Symbol('foo');

console.log(typeof symbol1);
// expected output: "symbol"

console.log(symbol3.toString());
// expected output: "Symbol(foo)"

console.log(Symbol('foo') === Symbol('foo'));
// expected output: false

主要用法:作为对象属性,防止属性名称冲突

详细的介绍,以及如何自己实现一个Symbol,可以参考链接

Object 类型

除了上面的7中基本类型以外,其他都是属于Object类型。比如标准对象,函数,日期,数组等等

@HuYuee HuYuee changed the title JavaScript规定了几种语言类型 JavaScript变量和类型 Dec 11, 2019
@HuYuee HuYuee self-assigned this Dec 11, 2019
@HuYuee HuYuee changed the title JavaScript变量和类型 JavaScript语言类型 Dec 16, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant