JavaScript有几种语言类型

本文探讨JavaScript的7种语言类型,包括undefined、null、Boolean、String、Number、Symbol和Object。详细解释了每种类型的特性,如用void 0代替undefined的原因,字符串的最大长度,Number类型中的浮点运算精度问题,以及ES6中新引入的Symbol类型。同时,文章讨论了如何在基本类型上使用对象方法的原理。
摘要由CSDN通过智能技术生成

抛出问题:

● 为什么有的编程规范要求用void 0 代替Undefined?
● 字符串有最大长度吗?
● 0.1+0.2不等于0.3吗?为什么js里面不是这样?
● es6中的Symbol是什么?
● 为什么给对象添加的方法能用在基本类型上

javascript规定了7种语言类型

其中最后一种Symbol是es6新增的
六种基本类型:
Number:数字
String:字符串
Boolean:true&fslse
Null:空,只有一个值,就是null表示空值,是关键字,可以放心使用null关键字来获取null值
Undefined:未定义
Symbol:独一无二的值
访问:基本数据类型的值是按值访问的
存储:基本类型的变量是存在堆内存里(stack)面
在这里插入图片描述

图解:
栈内存中包括了变量的标识符和变量的值
一种引用类型:
Object:对象
访问:引用类型的值是按照引用访问的
存储:引用类型的值是保存在堆内存(stack)中的对象(object)
在这里插入图片描述

图解:
堆内存中包含了变量的标识符和堆内存中指向该变量的对象
堆内存中包含了对象的内容

undefined、null

Q:为什么有的编程规范要求用void 0 代替Undefined?
javascript对象的未定义过的属性得到的值都是undefined
undefined类型表示未定义,它的类型只有一个值,就是undefined。任何变量在赋值前是undefined类型,值是undefined。一般可以用全局变量undefined来表达这个值,或者用void运算来把任意一个表达式值变为undefined。
但是,javascript里面的undefined是一个变量而不是关键字,这是javascript语言公认的失误之一,所以为了避免无意中被篡改,建议用void 0来获取undefined值。
null值类型也只有一个值,就是null,它的语义表示空值,与undefined不同,null是javascript的关键字,可以放心的使用null来获取null值。

Boolean

Boolean类型具有两个值,true和false,表示逻辑上的真和假,同样就具有两个关键字true和false来表示。

String

Q:字符串有最大长度吗?
String表示文本数据,String有最大长度2^53 - 1,这个所谓的最大长度,并不完全是我们理解中的字符数。因为String的意义并非“字符串”,而是字符串的UTF16编码,我们字符串的操作charAt、charCodeAt、length等方法针对的都是UTF16编码。所以字符串的最大长度,实际是受字符串的编码影响的。
注:现行的字符集国际标准,字符是以Unicode的方式表示的,每一个Unicode的码点表示一个字符,理论上,Unicode的范围是无限的。UTF是Unicode的编码方式,规定了码点在计算机中的表示方法,常见的有UTF16和UTF8。Unicode 的码点通常用 U+??? 来表示,其中 ??? 是十六进制的码点值。 0-65536(U+0000 - U+FFFF)的码点被称为基本字符区域(BMP)
JavaScript 字符串把每个 UTF16 单元当作一个字符来处理,所以处理非 BMP(超出 U+0000 - U+FFFF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值