当前位置: 首页 > news >正文

网站建设好后打开是目录文件河北省建筑信息平台

网站建设好后打开是目录文件,河北省建筑信息平台,南京网站建设哪里好,wordpress底部导航栏Javascript的数据类型 1.基本数据类型1.1七种基本数据类型1.2单独说说BigInt‌1.3其它注意点 2.引用数据类型3.基本数据类型和引用数据类型的区别4.双等于号和三等于号的区别5.Javascript的类型转换机制5.1显示转换(强制转换)5.2隐式转换(1)减、乘、除(2)加(加法要区别算,因为不…

Javascript的数据类型

  • 1.基本数据类型
    • 1.1七种基本数据类型
    • 1.2单独说说BigInt‌
    • 1.3其它注意点
  • 2.引用数据类型
  • 3.基本数据类型和引用数据类型的区别
  • 4.双等于号和三等于号的区别
  • 5.Javascript的类型转换机制
    • 5.1显示转换(强制转换)
    • 5.2隐式转换
      • (1)减、乘、除
      • (2)加(加法要区别算,因为+不仅仅是加法,还可以拼接)
      • (3)单个变量
      • (4)ToPrimitive原则

‌JavaScript主要有两种类型:基本数据类型和复杂数据类型‌(引用数据类型)。

1.基本数据类型

1.1七种基本数据类型

  • Boolean‌:表示逻辑值,只有两个值:true 和 false。
  • Number‌:表示数值,可以是整数或浮点数。‌
  • String‌:表示文本数据,用引号括起来。
  • ‌Undefined‌:表示未定义的值。‌
  • Null‌:表示空值,通常用于表示对象不存在或没有初始化。‌
  • Symbol‌(ES6 引入):一种唯一的、不可变的数据类型,通常用于作为对象属性的标识符。‌
  • BigInt‌(ES6 引入):表示大整数,用于处理超出普通数字范围的值。

1.2单独说说BigInt‌

在 JavaScript 中,最大的安全整数是 2 的 53 次方减 1,即 Number.MAX_SAFE_INTEGER,其值为 9007199254740991。这是因为 JavaScript 中使用双精度浮点数表示数字,双精度浮点数的符号位占 1 位,指数位占 11 位,尾数位占 52 位,因此能够准确表示的整数范围是有限的。超过这个范围的整数可能会失去精度。

//超过了2**53-1后精度会缺失
console.log(2 ** 53 - 1); //9007199254740991
console.log(Number.MAX_SAFE_INTEGER); //9007199254740991
console.log(2 ** 53); //9007199254740992
console.log(2 ** 53 + 1); //9007199254740992
console.log(2 ** 53 + 2); //9007199254740994
console.log(2 ** 53 + 3); //9007199254740996
console.log(2 ** 53 + 4); //9007199254740996

在这里插入图片描述
BigInt 是 JavaScript 中引入的一种新的数据类型,用于表示任意精度的整数。与普通的数字类型不同,BigInt 可以表示超出 Number.MAX_SAFE_INTEGER 的整数值,因此它可以用于处理非常大的整数,而不会丢失精度。

要创建 BigInt,可以在整数值后面添加 n 或调用 BigInt() 函数并将整数作为参数传递。

console.log(5648941287894651132156549781132n);
console.log(BigInt("5648941287894651132156549781132"));

在这里插入图片描述
Biglnt不能和普通的数字进行混合运算,只能使用Biglnt类型进行运算。

console.log(10000n + 10000n); //20000n
console.log(45612316546871512315645487n * 312121100n); //14236566414157737982622816612475700n
console.log(45612316546871512315645487 * 312121100n);//报错

比较运算符:

console.log(20n > 15); //true
console.log(20n === 20); //===不会做强制类型转换,false
console.log(typeof 20n); //类型为bigint
console.log(20n == "20"); //==不会严格比较,true

1.3其它注意点

console.log(typeof NaN); //number
console.log(typeof null); //object
console.log(undefined == null); //true
console.log(undefined === null); //false

2.引用数据类型

  • Object
  • Array
  • Function
  • RegExp
  • Date
  • Map
  • Set

3.基本数据类型和引用数据类型的区别

基本数据类型和引用数据类型本质的不同是存储上的区别

基本数据类型的值直接存储在栈内存中,值与值之间独立存在,修改一个变量不会影响到其他变量。对象(引用数据类型)是保存在堆内存中的,每创建一个新对象,就会在堆内存中开辟出一个新空间,变量保存的是对象的内存地址(对象的引用)如果两个变量保存的是同一个对象引用,当其中一个通过变量修改属性时,另一个也会受到影响‌。(很多地方都碰到过这种情况)

4.双等于号和三等于号的区别

=== 判断两边数据是否全等,即数据类型与值均相等。而 == 只判断是否相等。

5.Javascript的类型转换机制

5.1显示转换(强制转换)

  • Number()
  • parseInt()
  • Boolean()
  • String()

5.2隐式转换

当运算符两端的数据类型不一致,会触发隐式转换。

(1)减、乘、除

在对非Number 类型运用数学运算符(-*/)时,会先将非 Number 类型转换为 Number 类型再进行计算。示例如下:

console.log('a'-'b')//NaN
console.log(3-true)//2
console.log(3-null)//3
console.log(3-undefined)//NaN
console.log(false-null)//0
console.log(function (){}-0)//NaN

注意:在算术运算中,如果操作数中有 undefined,其运算结果是就是 NaNnull 在算术运算中则是隐式转换为数值 0 来参与运算。

(2)加(加法要区别算,因为+不仅仅是加法,还可以拼接)

加法运算遵守以下 3 条规则,优先级从高到低

  • 当一侧为 String 类型,被识别为字符串拼接,并会优先将另一侧转换为字符串类型。
  • 当一侧为 Number 类型,另一侧为原始类型,则将原始类型转换为 Number 类型。
  • 当一侧为 Number 类型,另一侧为引用类型,将引用类型和 Number 类型转换成字符串后拼接。

(3)单个变量

如果只有单个变量,会先将变量转换为 Boolean 值。只有 nullundefined''NaN0false 这几个会被转换为 false,其他的情况都是 true,比如 {} , [] 等。

(4)ToPrimitive原则

ToPrimitive 规则会尝试调用对象的 valueOftoString 方法,将参数转换为原始类型。

当对象类型需要转为原始类型时,它会先查找对象的 valueOf 方法,如果 valueOf 方法返回原始类型的值,则 ToPrimitive 的结果就是这个值,如果 valueOf 不存在或者 valueOf 方法返回的不是原始类型的值,就会尝试调用对象的 toString 方法,也就是会遵循对象的 ToString 规则,然后使用toString 的返回值作为 ToPrimitive 的结果。

  let str = new String(1)  // 通过 new String 创建了一个对象console.log(typeof str)  // objectconsole.log(str.valueOf())  // "1"console.log(typeof str.valueOf())  // stringconst obj = {valueOf() {return 1},toString() {return 2}}console.log(Number(obj))  // 1

注意:如果 valueOftoString 都没有返回原始类型的值,则会抛出异常。

const obj = {valueOf() {return []},toString() {return {}}
}
console.log(Number(obj))  // TypeError: Cannot convert object to primitive value

特殊:

String({})  // [object Object]
Number([])  // 0

String({}) 空对象会先调用 valueOf,但返回的是对象本身 {},不是原始类型,所以会继续调用toString,得到 [object Object]String([object Object]),所以转换后的结果为 [object Object]
Number([]) 空数组会先调用 valueOf,但返回的是数组本身 [],不是原始类型,所以会继续调用toString,得到 '',相当于 Number(''),所以转换后的结果为 0

http://www.dtcms.com/a/524968.html

相关文章:

  • 分红盘网站开发多少钱怎么做网站上做电子书
  • 网站后台的网址忘记了房天下搜房网官网
  • 碳中和时代:新能源汽车热管理技术新趋势
  • 爬虫逆向之X音a_bogus参数分析
  • Tigshop开源商城系统 JAVA v5.6.0 版本已发布
  • 自己可以申请网站做外卖吗竞价广告推广
  • 做淘宝联盟网站要多少钱?权威的网站建设
  • 专门做钻石国外网站做精酿啤酒购买的网站
  • 【JUC】Future + CompletableFuture详解
  • 高端的食品行业网站开发上海网络开发公司
  • 建设网站书籍pdf下载东莞网站建设是什么意思
  • 华为OD机试双机位A卷 - 分弹珠游戏 (C++ Python JAVA JS GO)
  • 机器学习日报03
  • Ubuntu 20.04上安装MuJoCo 210
  • 耳机商城网站开发新华书店网上商城
  • xcode只显示堆栈不定位断点处
  • 米思米网站订单取消怎么做室内设计师怎么找
  • “十五五”制造业自立新篇:工业软件成为关键支撑
  • 加速度计LIS2DW12开发(2)----基于中断信号获取加速度数据
  • **发散创新:金丝雀发布的技术深度解析与实现**随着技术的不断进步,金丝雀发布作为一种重要的软件发布策略,被广泛应用于生
  • 矽塔 SA8208 36V输入耐压 8A过流保护阈值 大功率过压过流保护芯片
  • 在网上做翻译的网站网站建设费属于哪个会计科目
  • 网站如何收录沭阳网站建设方案
  • 东丽集团网站建设什么网站可以接图做图
  • SAP SD交货单执行跟踪报表分享
  • vs code工具新手操作技巧
  • Delft3D建模、水动力模拟方法及在地表水环境影响评价中的实践技术应用
  • Python多态与继承详解
  • 详解c++中的文件流
  • 2017网站建设费用html网页设计毕业设计作品