当前位置:首页 > 日记 > 正文

javascript=计算。

javascript=计算。
你知道,Javascript = =是一个复杂的操作,它的操作规则非常奇怪,很容易出错,这已经成为Javascript中最糟糕的性能之一。

在仔细阅读ECMAscript规范,我画了一幅画,我想让你理解这幅画,可以彻底了解一切关于= =运算符。同时,我试图证明政府没有通过这篇文章对你不好的东西,很容易掌握,甚至似乎是合理的,是不是那么坏。

第一张照片:
的操作规则的精确描述:抽象=等式比较alrithm。但是,这样一个复杂的描述,你一定看了之后头不晕一匹马能带它去指导练习是肯定的吗

当然不是。规范毕竟是Javascript运行环境的开发人员(与V8引擎开发人员相比),而不是语言的用户。

在详细介绍图1的每一部分之前,让我们回顾一下js中的类型知识:

js中有两种类型的值:基本类型、对象类型。

基本类型包括五种类型:未定义的、空的、布尔的、数字的和字符串的。

对于未定义类型和null类型,只有一个值,即未定义的和空的;布尔类型有两个值:真和假;数字类型有许多值,String类型有许多值。

所有的物体都有价值和toString()()方法,从对象和可能,当然,是由子类重写。

现在考虑表达式:

x=y

x和y是六种类型之一的值。

当x和y是相同的时,y可以转换成x==y==y,后者很简单(只需注意可能是南),所以我们只考虑x和y在不同情况下的类型。

一个。没有也没有
在图1中,六种类型的Javascript值用蓝色背景的矩形表示:

字符串,数字,布尔和对象(左边的大矩形框)

未定义的和空的(右边的矩形框)

分组的依据是什么让我们看看右边的定义和空是用来表示不确定,无或空的,和权利四种类型都是明确的,我们可以说,空的:

左边是一个存在的世界,右边是一个空的世界。

要做到这一点,在任何值的世界中,大约两个的比较结果为false是合理的(即图1中连接两个矩形的水平线的false)。

两。空气和空气
Javascript中的未定义和空是我们经常崩溃的另一个地方,通常被认为是一个设计缺陷,我们不打算研究这一点,但我听说Javascript的作者首先想到的是:

如果你要给一个Object类型的变量的值,但没有任务,那么你可以用零和状态(证据是一个空typeof'object的结果);相反,如果你打算把一个变量给定的原始类型的值,但没有分配,然后你可以定义说这种状况。

这句话是否可信的结果,他们两个做的也是真的也是很合理的。(也就是说,在图1右垂直线的右边)。

在下一步之前,让我们从图1中的两个符号开始:大写字母n和p。这两个符号不是pn节中的正、负含义:

N代表数字的操作,而操作数传送到数。它是在ES规范抽象的操作,但是我们可以使用数字()函数在JS来等效替代。

P代表toprimitive操作的操作数转化为原始类型的值。在ES规范也是一个抽象的操作,它也可以转化为等效的js代码,但它是更复杂一点,在一个简单的方法,一个对象:

toprimitive(obj)相当于:首先计算obj.valueof(),如果结果是原来的值,然后返回结果;否则,计算obj.tostring(),如果结果是原来的值,然后返回这个结果;否则,抛出一个异常。

注:有一个例外,日期类型的对象,它首先调用toString()方法。

在图1中,与N或P线说,当这两种连接类型数据的操作,对操作数的另一侧标有N或P为数字或toprimitive变换。

三。真与假
如图1所示,当布尔值与其他类型的值进行比较时,布尔值被转换为一个数字,特别是

真的> 1

错误> 0

它不需要浪费太多的舌头,在C语言中,根本就没有布尔型,它是用来表示真和假逻辑的整数1和0。

四。字符序列
在图1中,我们将字符串和数字分成一组。为什么在这六种类型中,字符串和数字都是字符序列(至少是字面上的)。字符串是所有合法字符的序列,数字可以看作是符合特定条件的字符序列。因此,一个数字可以看作是字符串的子集。

根据图1,= =字符串和数字做手术,你需要使用的数字运算,字符串转换成数字。如果X是一个字符串,和Y是一个数,然后:

x y(x)-

那么,字符串转换成数字的规则是什么呢规范是用复杂的方式描述的,但总的来说,它是去掉字符串两边的引号,看看它是否能构成一个合法的数字。如果是这样,转换结果就是这个数字;否则,结果就是楠:

数('123 ') / 123

数('1.2e3 ') / 1200

数('123abc ') / /南

当然也有例外,例如,将空字符串转换为数字的结果是0。

编号() 0
五。简单的和复杂的
原始类型是简单类型,他们是直接和容易理解的。但是,缺点是表达能力有限,难以扩大,因此有一个对象,一个对象是一个集合的属性,和属性本身可以是一个对象,对象可以被构造为任意复杂的足以代表各种各样的东西。

但有时它是不复杂的一件好事。例如,一个很长的文章,是不是每个人都有时间,耐心或需要从头读到尾,通常只了解其中心思想,所以本文关键字和概述。在Javascript中的对象是相同的,我们需要有一种手段来了解其主要特点,所以对象的toString()和()方法的价值。

toString()方法来获得一个对象的文本描述;以及价值()方法来得到对象的特征值。

当然,这只是我自己的理解。此外,顾名思义,toString()方法会返回一个字符串,值()方法是什么根据规范中的规范,它会返回一个数字虽然内置类型的值()方法返回的数字号码和日期。

根据图1,当对象与非对象进行比较时,它需要将对象转换为原始类型。虽然布尔型和布尔型相比,它需要变换的布尔型数值型,但随后的对象类型更改为原始类型。这是合理的,毕竟,不严格等于= =,我们只需要把对象参与计算主要特点,边上的次要特征。

六。万物皆数
我们回头看一下图1,里面有n或p的线是没有方向的。如果我们在这些线上标出箭头,那就是从n或p的一端到另一端的连接,然后得到(未定义的和空的):
你发现了什么是的,在计算过程中,所有类型的数值都有转换成数字类型的倾向。毕竟,有一位名人说过:

一切都是。
七。板栗勉强
前面有太多的废话,下面是一个例子来证明图1是非常方便和有效的指导实践。

例如,以下:

{

首先,两个操作数分别是Object类型和布尔类型,如图1所示,您需要将布尔类型转换为数字类型,而false转为数字的结果为0,因此表达式被更改为:

{ = } = 0

这两个操作数成为对象类型和数字类型。如图1所示,您需要将对象类型转换为原始类型:

第一个电话{ }。值(),因为:()方法返回的数组本身,这样的结果是不是原来的类型,并继续调用toString(){ }。

对于数组,toString()算法的算法是将每个元素的字符串类型,然后将其连接顺序的,所以最终的结果是一个空字符串,这是一个价值的原始类型。

此时,表达式被更改为:

= = 0

两个操作数成为字符串类型和数字类型。根据图1,我们需要将字符串类型转换为数字类型。在数字为0之前的空字符串。因此表达式被更改为:

0 = 0

到目前为止,两个操作数的类型终于相同了,结果显然是真的。

从这个例子我们可以看到,掌握=操作规则,除了在图1中,还需要记住的内置对象的toString(值)和()的规则,包括对象、数组、日期、数字、字符串、布尔等。

八。总结
前面是非常混乱的,然后在图1中总结了操作规则在这里的表达式= =:

结果是真的未定义的= NULL。

=字符串编号,字符串为数字。

布尔值=其他类型,布尔值到数字。

对象=数字字符串,对象为基本类型。

最后,改变图片,只供娱乐:)
好了,结束了。如果你觉得这篇文章对你有用,请多表扬,让更多的人看到。

此外,文章中的谬论,请不要犹豫指出。

相关文章

AI中的渐变颜色选项是如何隐藏的

AI中的渐变颜色选项是如何隐藏的

选项,渐变,颜色,电脑软件,AI,有时,您不需要在渐变面板上使用这么多工具。如果你把它放在软件界面上,你可能不会使用那么多工具。如果你把它放在软件界面上,你可能会占用很多空间。对于软件界面的简单性和清晰性,我们可能想知道是否可以隐藏它,那…

利用VBA代码实现自动数据序列号

利用VBA代码实现自动数据序列号

代码实现,序列号,数据,电脑软件,VBA,同事们来帮忙,一个数据类似于A,B,C的数据,包括A、B和C有几个,现在需要B列对应的形式A1、A2、A3、A2等,也就是说,它需要实现数据数列的自动递进。除了手动录入,还有没有什么简单的方法呢 VBA代码的使用可以轻松…

搞笑个性签名造成2017微信WeChat滑

搞笑个性签名造成2017微信WeChat滑

语句,个性签名,搞笑,滑稽,经典,我会把以前的名字放在灯笼上,一个送你去天堂。下面是一个小系列的相关资料,为大家整理出好笑的人物签名,供大家参考! 搞笑个性签名微笑死{优秀文本} 四种壳具有1个动物扇贝。女人的爱;珍珠;熊毛;具有RARR;鳄鱼;袋;驴具…

Oraclesqlldr进口日期栏的实例

Oraclesqlldr进口日期栏的实例

进口,日期,实例,电脑软件,Oraclesqlldr,Oracle sqlldr importing an instance of a date column 一 加载数据 *文件 为表测试 字段终止符x 9 尾nullcols ( C2上(C2) C3日期YYYYMMDD C1seq_test_c1。nextval ) begindata aaaaaaaaaa 20051201…

插画绘制矢量图标简洁的气氛图标。

插画绘制矢量图标简洁的气氛图标。

图标,绘制,矢量,插画,简洁,今天,我想与大家分享的方法来绘制插画的矢量LO图标简洁大气。整体的LO设计简单而大气。让我们向朋友学习。 本教程的结束,以上是插画绘制简洁大气矢量罗图标的方法介绍,操作很简单,你有没有学习过我希望这篇文章能对…

PS如何合成PS制作

PS如何合成PS制作

电脑软件,PS,PS图象处理软件是一种常用的图像处理软件,被称为PS.,有了这个软件,你可以做很多,不能用手完成的效果和处理速度非常快,而且操作简单。例如,做几张图片,用PS,几个简单的步骤,容易处理。那么,如何将几张照片PS成一张图片,参考以下步骤。 软…

PS合成复仇者联盟2部电影海报的全

PS合成复仇者联盟2部电影海报的全

复仇者,电影海报,全过程,联盟,电脑软件,PS图像合成的学习本教程的教学研究人员用ps合成复仇者2的电影海报,一个标记的惊奇漫画的超级改造作用是教程海报的作用,Hank Pim博士的原创漫画(蚁人)是你的超级英雄管理的超级恶棍,并结合他的逮捕与终极…

ai文本如何不变成轮廓曲线也可以增

ai文本如何不变成轮廓曲线也可以增

曲线,笔画,轮廓,电脑软件,ai,大家都知道,addstroke反过来轮廓插图文字,笔画是文本的文本里,外面一半,主角细细看来,。一般来说,人物的轮廓曲线分离的内部或外部的文字笔画。事实上,让文字笔画只有在外是很简单的,不需要大纲一看! 步: 1,首先要播放人…

女孩的签名在女孩的雷声的乐趣的签

女孩的签名在女孩的雷声的乐趣的签

雷声,女孩,乐趣,电脑软件,作为一个女孩,你会留下一些关于你签名的有趣的句子吗请欣赏这个女孩有趣的签名。 女学生挑选的有意思的签名 1)自从空间音乐发生变化后,发现越来越多的人跑得越来越少。 2)在后面的半瓶_帽后。你,让我来不及处理。 3…

PS如何使用面具制作贺卡

PS如何使用面具制作贺卡

如何使用,面具,电脑软件,PS,对于初学PS的人来说,经常听说PS经常要用到面膜,但是因为面具很简单,所以不会被应用。所以,我注重蒙古文版本的应用,比如说蒙古版的贺卡,对于第一个PS的朋友来说。 软件名称:Adobe PS图象处理软件8全绿色中文版软件大小…

如何PSCS6产生日出光照效果

如何PSCS6产生日出光照效果

日出,效果,电脑软件,一幅高山日出的画面,如果没有阳光,就会显得没有生机和活力,今天我们将一起学习日出的效果。 软件名称:Adobe PS图象处理软件8全绿色中文版软件大小:150.1mb更新时间:2015-11-04 1、启动PS图象处理软件CS6软件和开放的照片。…

PHP中常用的三种设计模式

PHP中常用的三种设计模式

设计模式,三种,常用,电脑软件,PHP,首先,单件模式 所谓的单例模式,也就是说,这个类中只有一个实例存在于应用程序中。 单实例模式通常用于只允许数据库访问对象的实例,从而防止打开多个数据库连接。 一个类应该包含以下几点: 与普通类不同,单…