ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JavaScript如何进行类型转换?

2019-10-27 01:45:00  阅读:102  来源: 互联网

标签:type-conversion javascript


(1) console.log(8*null)

//输出为0(空值更改为0)

(2) console.log("5"-1)

//输出为4(“ 5”更改为5)

(3) console.log("5"+1)

//输出到“ 51”(1更改为“ 1”)

就像您看到上面的代码行一样,有时类型转换发生在二进制运算符的左侧,而有时发生在二进制运算符的右侧.

因此,我的问题是JavaScript如何确定需要更改的操作数类型,它是在内部发生(在用户不知情的情况下)还是存在数据类型的任何优先级?

解决方法:

>因为*是multiplicative operator,所以它在其两个操作数上都调用了规范的ToNumber抽象操作(首先是左操作数,然后是右操作数). ToNumber(null)的结果为0(请参阅表的链接),因此8 * 0为0.
>因为-是subtraction operator,所以它也会在其操作数上调用ToNumber.所以你得到5-1等于4.
> + operator具有两个含义:数学加法和字符串连接.如果两个操作数中的任何一个都是字符串,则将得到串联,而不是加法.更正式地讲:它首先通过规范的抽象ToPrimitive操作将其操作数转换为基元,然后确定任何一个操作数的基元值是否为字符串,如果是,则进行级联.在的情况下,哪个操作数(左或右)是字符串都没有关系,它可以是任何一个,并使其串联而不是加法.

So my question is how does JavaScript decides which operand type needs to be changed, does it happens internally (without in the knowledge of user) or is there any precedence of data type is there??

在规范中非常详细地阐明了这一点,因此,如果您对特定情况有任何疑问,那就去找.

标签:type-conversion,javascript
来源: https://codeday.me/bug/20191027/1941060.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有