初学前端JavaScript入门文档

JavaScript表达式与运算符

2019-11-03  本文已影响0人  简约酒馆

表达式


概念:

将同类型的数据(如常量、变量、函数等),用运算符号按一定的规则连接起来的、有意义的式子称为表达式。

运算符

运算符用于执行程序代码运算

运算符完成操作的一系列符号,在 JavaScript 中有算术运算符,如+、-、*、/、%等;有比较运算符如!=、==等;有逻辑运算符如!(取反)、&&、||; 有字符串运算如+ 、 +=等。

大多数的运算符都是由标点符号表示的,比如“+”和“=”。而另外一些运算符则是由关键字表示的。比如delete和instanceof。

操作数的个数:一元运算符  二元运算符 三元运算符

运算符可以根据其操作数的个数进行分类。

javascript中大多数的运算符(比如“*”乘法运算符)是一个二元运算符,将两个表达式合并成一个稍复杂的表达式。换言之他们的操作数是两个。

javascript同样支持一些一元运算符,比如表达式-x中的“-”运算符就是一个一元运算符,是将操作数x求负值。

最后。javascript支持一个三元运算符,条件判断运算符“?:”,它将三个表达式合并成一个表达式。

运算符的优先级

最基本的运算符优先级就是所谓的“ 先乘除, 后加减” 。 

对于优先顺序处于同一层次上的运算符, 按照从左到右出现的顺序计算。

typeof 是优先级别最高的运算符之一。

如果你不确定你所使用的运算符的优先级,最简单的办法就是使用圆括号来强行指定运算次序。

赋值运算的优先级非常低,通常都是最后执行。

运算符的结合性

概念:相同优先级的运算符在同一个表达式中,且没有括号的时候,运算符和操作数的结合方式。

通常有从左到右结合和从右向左结合两种方式。

(左结合性和右结合性)

算数表达式

“+”运算符

二元加法运算符“+”可以对两个数字做加法

一元算数运算符

定义:一元运算符作用于一个单独的操作数,并产生一个新值。

在javascript中,一元运算符具有很高的优先级,而且都是右结

合。

(+、-、++和--),必要时,它们会将操作数转换为数字。需

要注意的是,”+”和”-”是一元运算符,也是二元运算符。

<1>一元加法(+)

把操作符转换为数字(或者NaN),并返回这个数字。

<2>一元减法

把操作符转换为数字然后改变运算结果的符号。

<3>递增(++)

    “++”运算符对其操作数进行增量(加一)操作,运算符将

操作数转换为数字,然后给数字加1,并将加1后的数值重新

赋值给变量、数组元素或者对象属性。

    递增“++”运算符的返回值依赖于它相对于操作数的位置。

当运算符在操作数之前,称为前增量运算符,他对操作数进

行增量计算,并返回计算后的值。    当运算符在操作数之后,

称为后增量运算符,它对操作数进行增量计算,但返回未做

增量计算的值。

var i

= 1; j = ++i;

<4>递减(--)同理

乘法运算符

乘法运算符由星号(*)表示,用于两数相乘。

不过,在处理特殊值时,ECMAScript

中的乘法还有一些特殊行为:

如果结果太大或太小,那么生成的结果是

Infinity 或 -Infinity。

如果某个运算数是

NaN,结果为 NaN。

Infinity乘以 0,结果为 NaN。

Infinity乘以 0 以外的任何数字,结果为 Infinity 或 -Infinity。

Infinity乘以 Infinity,结果为 Infinity。

除法运算符

除法运算符由斜杠(/)表示,用第二个运算数除第一个运算数:

与乘法运算符相似,在处理特殊值时,除法运算符也有一些特殊行为:

如果结果太大或太小,那么生成的结果是 Infinity 或 -Infinity。

如果某个运算数是 NaN,结果为 NaN。

Infinity 被 Infinity 除,结果为 NaN。

Infinity 被任何数字除,结果为 Infinity。

Infinity 被 0 以外的任何数字除,结果为 Infinity 或-Infinity。

取模运算符

取模(余数)运算符由百分号(%)表示,与其他乘性运算符相似,对于特殊值,取模运算符也有特殊的行为:

如果被除数是 Infinity,或除数是 0,结果为 NaN。

Infinity 被 Infinity 除,结果为 NaN。

如果除数是无穷大的数,结果为被除数。

如果被除数为 0,结果为 0。

关系表达式

关系运算符用于测试两个值之间的关系,根据关系是否存在而返回true或false,关系表达式总是返回一个布尔值。通常在if、while、或者for语句中使用关系表达式,用于控制程序的执行流程。

相等和不等运算符

    等号由双等号(==)表示,当且仅当两个运算数相等时,它返回true。非等号由感叹号加等号(!=)表示,当且仅当两个运算数不相等时,它返回 true。为确定两个运算数是否相等,这两个运算符都会进行类型转换。

执行类型转换的规则如下:

a如果一个运算数是 Boolean值,在检查相等性之前,把它转换成数字值。false 转换成 0,true 为 1。

b如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字。

c如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串。

d如果一个运算数是对象,另一个是数字,在检查相等性之前,要尝试把对象转换成数字。

在比较时,该运算符还遵守下列规则:

值:null 和 undefined 相等。

在检查相等性时,不能把

null 和 undefined 转换成其他值。

如果某个运算数是

NaN,等号将返回 false,非等号将返回 true。

如果两个运算数都是对象,那么比较的是它们的引用值。如果两个运算数指向同一对象,那么等号返回

true,否则两个运算数不等。

重要提示:即使两个数都是

NaN,等号仍然返回 false,因为根据规则,NaN 不等于 NaN。

全等号和非全等号

等号和非等号的同类运算符是全等号和非全等号。这两个运

算符所做的与等号和非等号相同,只是它们在检查相等性前,

****(不执行类型转换)

全等号由三个等号表示(===),只有在无需类型转换运算数就相等的情况下,才返回true。

比较运算符

较和逻辑运算符用于测试 true 或 false

小于(<)、大于(>)、小于等于(<=)和大于等于(>=)这几个关系操作符用于对两个值进行比较,规则和数学里面一样。都返回一个布尔值。

所有涉及到NaN的比较均返回false

可以有文本类型和数字类型比较,会转换为数字比较

若全是文本类型,则最后才是关键,按每个字符的 charCode大小进行比较,直到分出大小为止

比较运算符在逻辑语句中使用,以测定变量或值是否相等。

Eg:给定 x=5,下面的表格解释了比较运算符:

逻辑运算符(用于测定变量或值之间的逻辑)


逻辑与(&&)

 && 运算符可以从三个不同层次进行理解:

(1)当操作数都是布尔值的时候,&&对两个值执行布尔与操作,只有在两个操作数都是true的时候,才返回true。

(2)&&的操作数并不一定是布尔值,还有真值和假值null.undefined,0,-0,NaN,false,'所以,第二层理解是,&&可以对真值和假值进行布尔与操作。如果都是真值,那么返回一个真值,否则,至少一个是假值,则返回一个假值。在JavaScript中任何希望使用布尔值的地方,表达式和语句都会将其当做真值和假值来对待,&&并不总是返回true和false,但并无大碍。

(3)&&运算符首先计算左操作数的值,如果是假值,那么整个表达式的结果一定是假值,因此&&这时简单的返回左操作数的值,而并不会对右操作数进行计算;如果左操作数是真值,那么整个表达式的结果依赖于右操作数的值;此时,&&运算符将计算右操作数的值并将其返回作为整个表达式的计算结果。

逻辑或(||)

||运算符对两个操作数做布尔或运算,如果其中一个或者两个操作数是真值,返回一个真值,如果两个操作数都是假值,返回一个假值。

   和&& 类似,|| 并不仅仅会做布尔值的运算,它也具有一些更复杂的行为。

   如果||的左操作数是真值,则返回这个真值;左操作数是假值,此时依赖右操作数,计算右侧表达式并返回值

逻辑非(!)

定义:对一个表达式执行逻辑求反操作。

语法: result = !expression

通俗易懂的解释就是:不是result 正确就是expression错误,

result为true ,expression就为false。

    result和expression  就是相反的值。

“!”与“&&”和“||”不同,“!”运算符首先将其操作数转换为布尔值,然后再对布尔值求反,也就是说“!”只返回布尔值true或false

"!"具有很高的优先级,如果希望对q&& p求反,则需要使用圆括号:!(p && q)

赋值运算符

赋值运算符用于给JavaScript 变量赋值。

1.简单的赋值运算符由等号(=)实现,只是把等号右边的值赋予等号左边的变量。

var Num = 10;

2.复合赋值运算是由乘性运算符、加性运算符加等号(=)实现的。

乘法/赋值(*=)

除法/赋值(/=)

取模/赋值(%=)

加法/赋值(+=)

减法/赋值(-=)

3.其他运算符

条件(三目)运算符(?:)

条件运算符是

ECMAScript 中功能最多的运算符,它的形式与 Java 中的相同

4void运算符的应用场合

void是一个操作符,该操作符指定要计算一个表达式但是不返回值。

void操作符用法格式如下:

1.javascript:void (expression)

2.javascript:void expression

expression是一个要计算的 Javascript 标准的表达式。表达式外侧的圆括号是选的,但是写上去是一个好习惯。

javascript:void(0)表示不做任何动作

 这里表示这个链接不做跳转动作,执行onClick事件。ahref=#与 a href=javascript:void(0) 的区别 链接的几种办法#包含了一个位置信息,默认的锚是#top也就是网页的上端而javascript:void(0)  仅仅表示一个死链接。这就是为什么有的时候页面很长浏览链接明明是#但是跳动到了页首而javascript:void(0)则不是如此。所以调用脚本的时候最好用void(0)或者<input onclick><div onclick>等

.总结:

a、void(0)用于执行某些处理,是不整体刷新页面的情况下,但是在需要对页面进行refresh的情况下,那就要仔细了。

b、其实我们可以这样用<ahref=”javascript:void(document.form.submit())”>,这句话会进行一次submit操作。那什么情

况下用void(0)比较多呢,无刷新,当然是Ajax了,看一下Ajax的web页面的话,一般都会看到有很多的void(0),:)

,所以在使用void(0)之前,最好先想一想,这个页面是否需要整体刷新

c、 说白了,href="#"这种形式会整体刷新页面,而

href="javascript:void(0)" 则不会

5.逗号运算符(,)

定义:用逗号运算符可以在一条语句中执行多个运算。

Eg:var iNum1 = 1, iNum2 = 2, iNum3 = 3;

逗号运算符常用变量声明中。

逗号运算符是一个二元运算符,它的操作数可以是任意类型。它首先计算左操作数,然后计算右操作数,最后返回右操作数的值

链接的几种办法

1.window.open(''url'')

2用自定义函数

<script>

  function openWin(tag,obj)

  {

   obj.target="_blank";

   obj.href = "Web/Substation/Substation.aspx?stationno="+tag;

   obj.click();

  }

</script>

<a href="javascript:void(0)"

onclick="openWin(3,this)">广州</a>

 window.location.href=""

上一篇 下一篇

猜你喜欢

热点阅读