我爱编程

[ECMAScript 知识] ECMAScript 基础/运算

2018-04-16  本文已影响0人  学识浅薄的胖

文档标识:[C-180409-M-180416]
知识来源:W3School ECMAScript 语法
内容链接均来源于互联网,如有侵权,请联系删除。

ECMAScript 知识概要

基础

var iNum = 10;
alert(iNum.toString(2));    //输出 "1010"
alert(iNum.toString(8));    //输出 "12"
alert(iNum.toString(16));   //输出 "A"
var s1 = String(null);  //"null"
var oNull = null;
var s2 = oNull.toString();  //会引发错误
var oStringObject = new String("hello world");
alert(oStringObject instanceof String); //输出 "true"

运算符

  1. delete 运算符删除对以前定义的对象属性或方法的引用。
var o = new Object;
o.name = "David";
alert(o.name);  //输出 "David"
delete o.name;
alert(o.name);  //输出 "undefined"

在这个例子中,删除了 name 属性,意味着强制解除对它的引用,将其设置为 undefined(即创建的未初始化的变量的值)。
delete 运算符不能删除开发者未定义的属性和方法。

  1. void 运算符对任何值返回 undefined。
    没有返回值的函数真正返回的都是 undefined。

  2. 一元加法和一元减法
    尽管一元加法对数字无作用,但对字符串却有有趣的效果,会把字符串转换成数字。

var sNum = "20";
alert(typeof sNum); //输出 "string"
var iNum = +sNum;
alert(typeof iNum); //输出 "number"

这段代码把字符串 "20" 转换成真正的数字。当一元加法运算符对字符串进行操作时,它计算字符串的方式与 parseInt() 相似,主要的不同是只有对以 "0x" 开头的字符串(表示十六进制数字),一元运算符才能把它转换成十进制的值。因此,用一元加法转换 "010",得到的总是 10,而 "0xB" 将被转换成 11。
一元减法就是对数值求负,与一元加法运算符相似,一元减法运算符也会把字符串转换成近似的数字,此外还会对该值求负。

  1. 位运算 NOT 由否定号(~)表示,它是 ECMAScript 中为数不多的与二进制算术有关的运算符之一。
    位运算 NOT 是三步的处理过程:
    把运算数转换成 32 位数字
    把二进制数转换成它的二进制反码
    把二进制数转换成浮点数
    位运算 NOT 实质上是对数字求负,然后减 1。

  2. 位运算 AND 由和号(&)表示,直接对数字的二进制形式进行运算。

  3. 位运算 OR 由符号(|)表示,也是直接对数字的二进制形式进行运算。

  4. 位运算 XOR 由符号(^)表示,当然,也是直接对二进制形式进行运算。XOR 不同于 OR,当只有一个数位存放的是 1 时,它才返回 1。

  5. 左移运算由两个小于号表示(<<)。它把数字中的所有数位向左移动指定的数量。例如,把数字 2(等于二进制中的 10)左移 5 位,结果为 64(等于二进制中的 1000000)

  6. 有符号右移运算符由两个大于号表示(>>)。它把 32 位数字中的所有数位整体右移,同时保留该数的符号(正号或负号)。有符号右移运算符恰好与左移运算相反。例如,把 64 右移 5 位,将变为 2。同样,移动数位后会造成空位。这次,空位位于数字的左侧,但位于符号位之后。ECMAScript 用符号位的值填充这些空位,创建完整的数字。

  7. 无符号右移运算符由三个大于号(>>>)表示,它将无符号 32 位数的所有数位整体右移。对于正数,无符号右移运算的结果与有符号右移运算一样。对于负数,情况就不同了。无符号右移运算用 0 填充所有空位。对于正数,这与有符号右移运算的操作一样,而负数则被作为正数来处理。

参数类型 结果
Undefined false
Null false
Boolean 结果等于输入的参数(不转换)
Number 如果参数为 +0, -0 或 NaN,则结果为 false;否则为 true
String 如果参数为空字符串,则结果为 false;否则为 true
Object true
  1. 在 ECMAScript 中,逻辑 NOT 运算符与 C 和 Java 中的逻辑 NOT 运算符相同,都由感叹号(!)表示。与逻辑 OR 和逻辑 AND 运算符不同的是,逻辑 NOT 运算符返回的一定是 Boolean 值。
    如果运算数是 undefined,发生错误。

  2. 在 ECMAScript 中,逻辑 AND 运算符用双和号(&&)表示。
    逻辑 AND 运算的运算数可以是任何类型的,不止是 Boolean 值。
    如果某个运算数不是原始的 Boolean 型值,逻辑 AND 运算并不一定返回 Boolean 值:
    如果一个运算数是对象,另一个是 Boolean 值,返回该对象。
    如果两个运算数都是对象,返回第二个对象。
    如果某个运算数是 null,返回 null。
    如果某个运算数是 NaN,返回 NaN。
    如果某个运算数是 undefined,发生错误。

  3. ECMAScript 中的逻辑 OR 运算符与 Java 中的相同,都由双竖线(||)表示。
    如果某个运算数不是 Boolean 值,逻辑 OR 运算并不一定返回 Boolean 值。
    如果一个运算数是对象,并且该对象左边的运算数值均为 false,则返回该对象。
    如果两个运算数都是对象,返回第一个对象。
    如果最后一个运算数是 null,并且其他运算数值均为 false,则返回 null。
    如果最后一个运算数是 NaN,并且其他运算数值均为 false,则返回 NaN。
    如果某个运算数是 undefined,发生错误。

  1. 乘法运算符由星号(*)表示,用于两数相乘。ECMAScript 中的乘法语法与 C 语言中的相同。
    ECMAScript 中的乘法还有一些特殊行为:
    如果结果太大或太小,那么生成的结果是 Infinity 或 -Infinity。
    如果某个运算数是 NaN,结果为 NaN。
    Infinity 乘以 0,结果为 NaN。
    Infinity 乘以 0 以外的任何数字,结果为 Infinity 或 -Infinity。
    Infinity 乘以 Infinity,结果为 Infinity。

  2. 除法运算符由斜杠(/)表示,用第二个运算数除第一个运算数。
    在处理特殊值时,除法运算符也有一些特殊行为:
    如果结果太大或太小,那么生成的结果是 Infinity 或 -Infinity。
    如果某个运算数是 NaN,结果为 NaN。
    Infinity 被 Infinity 除,结果为 NaN。
    Infinity 被任何数字除,结果为 Infinity。
    0 除一个任何非无穷大的数字,结果为 NaN。
    Infinity 被 0 以外的任何数字除,结果为 Infinity 或 -Infinity。

  3. 除法(余数)运算符由百分号(%)表示。
    对于特殊值,取模运算符也有特殊的行为:
    如果被除数是 Infinity,或除数是 0,结果为 NaN。
    Infinity 被 Infinity 除,结果为 NaN。
    如果除数是无穷大的数,结果为被除数。
    如果被除数为 0,结果为 0。

  1. 法运算符由加号(+)表示。
    在处理特殊值时,ECMAScript 中的加法也有一些特殊行为:
    某个运算数是 NaN,那么结果为 NaN。
    -Infinity 加 -Infinity,结果为 -Infinity。
    Infinity 加 -Infinity,结果为 NaN。
    +0 加 +0,结果为 +0。
    -0 加 +0,结果为 +0。
    -0 加 -0,结果为 -0。
    不过,如果某个运算数是字符串,那么采用下列规则:
    如果两个运算数都是字符串,把第二个字符串连接到第一个上。
    如果只有一个运算数是字符串,把另一个运算数转换成字符串,结果是两个字符串连接成的字符串。

  2. 减法运算符(-),也是一个常用的运算符。
    在处理特殊值时,减法运算符也有一些特殊行为:
    某个运算数是 NaN,那么结果为 NaN。
    Infinity 减 Infinity,结果为 NaN。
    -Infinity 减 -Infinity,结果为 NaN。
    Infinity 减 -Infinity,结果为 Infinity。
    -Infinity 减 Infinity,结果为 -Infinity。
    +0 减 +0,结果为 +0。
    -0 减 -0,结果为 -0。
    +0 减 -0,结果为 +0。
    某个运算符不是数字,那么结果为 NaN。

var bResult = "25" < 3;
alert(bResult); //输出 "false"

根据规则,任何包含 NaN 的关系运算符都要返回 false。

var bResult = "a" < 3;
alert(bResult);  //false
var bResult = "a" >= 3;
alert(bResult);  //false
上一篇下一篇

猜你喜欢

热点阅读