JavaScript权威指南之学习笔记(第六版)(3)

2019-01-07 18:26

如果两个值具有相同的类型,那么就检测它们的等同性。

如果两个值的类型不同,它们仍然可能相等,用下面的规则和类型

转换来检测它们的相等性。(数字有最高的优先级)

1)如果一个值是Null,另一个值是Undefined,则它们相等。 2)如果一个值是字符串,另一个值是数字,那么字符串先转化为数

字再进行比较

3)如果一个值是布尔值,另一个值为数字或字符串,布尔值和字符

串都先转化为数字再进行比较,true为1,false为0.

4)如果一个值是对象,别一个是数字或字符串,则对象转换为相应

的原始类型的值。

5)其它组合的值不等的。

5.5关系运算符

5.5.1比较运算符(<,>,<=,=>)

这些比较运算符的运算数可以是任意类型的。但是比较运算只能在

数字和字符串上执行,所以不是数字或字符串的运算数将被转换为数字或字符串。

1) 字符串和数字比较,转换为数字再进行比较。

2)操作数不能转换为数字或字符串时,比较结果为false。 3)若一个操作数为NAN或转换为了NAN,比较结果为false。

5.5.2In运算符

In运算符要求左边的运算数是一个字符串,或可以被转换为字符串,

右边的运算数是一个对象或数组或函数。如果该运算符左边的值是其右边对象的一个属性名,它返回true。 例

Var point={x:1,y:2};

Var has_x_record=”x” in point;//return true Var has_z_record=”z” in point;//return false

函数之所以可以由此运算符来检测属性,因为函数也可以有属性,

并且本身就是特殊的对象(或叫类更好些),所以由推开去,很多对象有的功能,函数和数组也有

5.5.3instanceof运算符(跟C#的is关键字类似)

Instanceof运算符要求左边的运算数是一个对象,右边的运算数是

对象类型的名字。注意,所有对象都是类object类的实例。

例:

Var d=new Date();

d instanceof Date;//return true d instanceof Object;//return true d instanceof Number//return false var a=[1,2,3];

a instanceof Array;//return true a instanceof Object;//return true\\

5.6字符串运算符

字符串算符“+“中,字符串的优先级最高。 如:1+”2”=”12”,”2”+1=”21”.

5.7逻辑运算符

5.7.1逻辑与运算符(&&)

先计算左边表达式的值,如果左边表达式值可以转换为false,那么

返回的是左边表达式的值,否则,它将计算右边的表达式的值,并且返回这个表达式的值。

5.7.2逻辑或运算符(||)

原理同逻辑与运算符,先计算左边表达式的值,如果左边表达式的

值可以转换为true,则返回这个表达式的值,否则,它将计算右边表达式的值,并且返回该表达式的值。

5.7.3逻辑非运算符(!)

在对操作数取反之前,!运算符先把它的运算数转换为一个布尔类

型的值,这意味着,对任何值x应用两次运算符(即!!x)都可以将它转换成一个布尔值。第一次为了使操作数在布尔环境中取得操作数的相反的布尔值,而第二次就是使取得操作数的正确的布尔值!! 5.10其它运算符

5.10.2typeof运算符(与C#的typeof()运算符一样的)

它测试一个操作数,返回一个字符串来表式一个操作数的类型。

对数字、字符串或布尔值,返回”number”、”string“、”boolean”,

而对数组、对象和Null,它返回的是”object”,而对函数运算数,返回的是”function”,如果运算数是未定义的,它将返回”Undefined”.

5.10.4delete运算符

它将删除运数所指定的对象的属性、数组元素或变量或函数的属性。

如果删除成功返回true,若不能删除,返回false。并非所有的属性和变量都是可以删除的,某些内部的核心和客户端属性不能删除,用var语句声明的用户定义变量也不能被删除。

注意,删除属性、变量(数组不一样)不只是把它们的值设置为un

defined,当删除它们后,它们全部变成未定义的,也即不存在的,再次尝试读取它们时会出错。

Delete所能影响的只是属性值,并不能影响被这些属性引用的对象,

即这些对象只要用其它属性引用就还存在!

5.10.5void运算符

它可以出现在任何类型操作数之前,它总是舍弃运算数的值,然后

返回undefined.这种运算符通常用在客户端的javascript:Url中,在这里可以计算表式的值,但是不会显示出这个值。

open a widn

ow 六、语句

6.1switch语句

ECMAScript v3标准允许case 语句扣跟随任意的表达式。例如: Case 60*60:

Case Math.pi; Case n+1;

注意:由于匹配的case表达式是用===等同运算符判定的,而不是用

==运算符判定的,所以表达式必须在没有类型转换的情况下进行匹配。

6.9for/in语句

For(variable in object) {statement }

Variable应该是一个变量名,声明一个变量的var语句,数组的一个元

素或者是对象的一个属性。Object是一个对象名。

在循环体执行之前,对象的一个属性名会被作为字符串赋给变量variab

le。在循环体中可以使用这个变量和[]运算符查询该对象属性的值。

注意,for/in循环中的variable可以是任意的表达式,只要它们的值适

用于赋值表达式的的左边即可。

JS的数组是一种特殊的对象,因此可以像循环对象属性那样枚举数组下

标。

如果for/in循环的主体删除了一个还没有枚举出的属性,那么该属性就

不再枚举,如果循环主体定义了新属性,那么循环是否枚举该属性则由JS的实现决定。

For/in循环并不会遍历所有对象的所有可能的属性,那些被标记为只读

的、永久的或不可列举的(继承的也不可以),这些属性使用此语句是枚举不出来的,所有用户自定义的属性可以枚举的!


JavaScript权威指南之学习笔记(第六版)(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2017-3-2监理例会纪要

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: