资讯专栏INFORMATION COLUMN

复习js 2

yhaolpz / 2947人阅读

摘要:复习表达式和运算符运算符拥有如下类型的运算符。例如十进制数字用二进制表示为,位运算符就是在这个二进制表示上执行运算,但是返回结果是标准的数值。因此,用于布尔值时,当任何一个操作数为则返回如果操作数都是则返回。

复习js day2 表达式和运算符 运算符

JavaScript 拥有如下类型的运算符。本节描述了运算符和运算符的优先级。

赋值运算符(Assignment operators)

比较运算符(Comparison operators)

算数运算符(Arithmetic operators)

位运算符(Bitwise operators)

逻辑运算符(Logical operators)

字符串运算符(String operators)

条件(三元)运算符(Conditional operator)

逗号运算符(Comma operator)

一元运算符(Unary operators)

关系运算符(Relational operator)

解构赋值
详见 http://es6.ruanyifeng.com/#do...
赋值运算符

一个 赋值运算符(assignment operator) 将它右边操作数的值赋给它左边的操作数。最简单的赋值运算符是等于(=),它将右边的操作数值赋给左边的操作数。那么 x = y 就是将 y 的值赋给 x。

还有一些复合赋值操作符,它们是下表列出的这些操作的缩写:

名字 简写的操作符 含义
赋值(Assignment) x = y x = y
加法赋值(Addition assignment) x += y x = x + y
减法赋值(Subtraction assignment) x -= y x = x - y
乘法赋值(Multiplication assignment) x *= y x = x * y
除法赋值(Division assignment) x /= y x = x / y
求余赋值(Remainder assignment) x %= y x = x % y
求幂赋值(Exponentiation assignment) x **= y x = x ** y
左移位赋值(Left shift assignment) x <<= y x = x << y
右移位赋值(Right shift assignment) x >>= y x = x >> y
无符号右移位赋值(Unsigned right shift assignment) x >>>= y x = x >>> y
按位与赋值(Bitwise AND assignment) x &= y x = x & y
按位异或赋值(Bitwise XOR assignment) x ^= y x = x ^ y
按位或赋值(Bitwise OR assignment) x = y x = x y
算术运算符

算术运算符使用数值(字面量或者变量)作为操作数并返回一个数值.标准的算术运算符就是加减乘除(+ - * /)。当操作数是浮点数时,这些运算符表现得跟它们在大多数编程语言中一样(特殊要注意的是,除零会产生Infinity)。例如:

1 / 2;  // 0.5
1 / 2 == 1.0 / 2.0; // true
位运算符

位运算符将它的操作数视为32位元的二进制串(0和1组成)而非十进制八进制或十六进制数。例如:十进制数字9用二进制表示为1001,位运算符就是在这个二进制表示上执行运算,但是返回结果是标准的JavaScript数值。

Operator Usage Description
按位与 AND a & b 在a,b的位表示中,每一个对应的位都为1则返回1, 否则返回0.
按位或 OR a b 在a,b的位表示中,每一个对应的位,只要有一个为1则返回1, 否则返回0.
按位异或 XOR a ^ b 在a,b的位表示中,每一个对应的位,两个不相同则返回1,相同则返回0.
按位非 NOT ~ a 反转被操作数的位。
左移 shift a << b 将a的二进制串向左移动b位,右边移入0.
算术右移 a >> b 把a的二进制表示向右移动b位,丢弃被移出的所有位.Operator Usage Description 按位与 AND a & b 在a,b的位表示中,每一个对应的位都为1则返回1, 否则返回0. 按位或 OR a b 在a,b的位表示中,每一个对应的位,只要有一个为1则返回1, 否则返回0. 按位异或 XOR a ^ b 在a,b的位表示中,每一个对应的位,两个不相同则返回1,相同则返回0. 按位非 NOT ~ a 反转被操作数的位。 左移 shift a << b 将a的二进制串向左移动b位,右边移入0. 算术右移 a >> b 把a的二进制表示向右移动b位,丢弃被移出的所有位. (译注:算术右移左边空出的位是根据最高位是0和1来进行填充的) 无符号右移 a >>> b 把a的二进制表示向右移动b位,丢弃被移出的所有位,并把左边空出的位都填充为0 (左边空出位用0填充)
无符号右移(左边空出位用0填充) a >>> b 把a的二进制表示向右移动b位,丢弃被移出的所有位,并把左边空出的位都填充为0
逻辑运算符
运算符 范例 描述
逻辑与 (&&) expr1 && expr2 (逻辑与) 如果expr1能被转换为false,那么返回expr1;否则,返回expr2。因此,&&用于布尔值时,当操作数都为true时返回true;否则返回false.
逻辑或 ( ) expr1 expr2 (逻辑或) 如果expr1能被转换为true,那么返回expr1;否则,返回expr2。因此, 用于布尔值时,当任何一个操作数为true则返回true;如果操作数都是false则返回false。
逻辑非 (!) !expr (逻辑非) 如果操作数能够转换为true则返回false;否则返回true。

下面是&&(逻辑"与")操作符的示例。

var a1 =  true && true;     // t && t returns true
var a2 =  true && false;    // t && f returns false
var a3 = false && true;     // f && t returns false
var a4 = false && (3 == 4); // f && f returns false
var a5 = "Cat" && "Dog";    // t && t returns Dog
var a6 = false && "Cat";    // f && t returns false
var a7 = "Cat" && false;    // t && f returns false

下面是||(逻辑"或")操作符的示例。

var o1 =  true || true;     // t || t returns true
var o2 = false || true;     // f || t returns true
var o3 =  true || false;    // t || f returns true
var o4 = false || (3 == 4); // f || f returns false
var o5 = "Cat" || "Dog";    // t || t returns Cat
var o6 = false || "Cat";    // f || t returns Cat
var o7 = "Cat" || false;    // t || f returns Cat

下面是!(逻辑"非")操作符的示例。

var n1 = !true;  // !t returns false
var n2 = !false; // !f returns true
var n3 = !"Cat"; // !t returns false

短路求值
作为逻辑表达式进行求值是从左到右,它们是为可能的“短路”的出现而使用以下规则进行测试:

false && anything    // 被短路求值为false
true || anything       // 被短路求值为true

逻辑的规则,保证这些评估是总是正确的。请注意,上述表达式的anything部分不会被求值,所以这样做不会产生任何副作用。

字符串运算符

除了比较操作符,它可以在字符串值中使用,连接操作符(+)连接两个字符串值相连接,返回另一个字符串,它是两个操作数串的结合。

例如,

console.log("my " + "string"); // console logs the string "my string".

简写操作符 += 也可以用来拼接字符串,例如:

var myString = "alpha";

myString += "bet"; // 返回 "alphabet"  
条件(三元)运算符

条件运算符是JavaScript中唯一需要三个操作数的运算符。运算的结果根据给定条件在两个值中取其一。语法为:

条件 ? 值1 : 值2

如果条件为真,则结果取值1。否则为值2。你能够在任何允许使用标准运算符的地方使用条件运算符。

例如,

var status = (age >= 18) ? "adult" : "minor";

当 age 大于等于18的时候,将“adult”赋值给 status;否则将“minor”赋值给 status。

一元操作符 typeof

typeof操作符 可通过下面2种方式使用:

typeof operand
typeof (operand)

typeof 操作符返回一个表示 operand 类型的字符串值。operand 可为字符串、变量、关键词或对象,其类型将被返回。operand 两侧的括号为可选。

假设你定义了如下的变量:

var myFun = new Function("5 + 2");
var shape = "round";
var size = 1;
var today = new Date();
typeof 操作符将会返回如下的结果:

typeof myFun;     // returns "function"
typeof shape;     // returns "string"
typeof size;      // returns "number"
typeof today;     // returns "object"
typeof dontExist; // returns "undefined"

对于关键词 true 和 null,
typeof 操作符将会返回如下结果:

typeof true; // returns "boolean"
typeof null; // returns "object"

对于一个数值或字符串, typeof 操作符将会返回如下结果:

typeof 62;            // returns "number"
typeof "Hello world"; // returns "string"

对于属性值,typeof 操作符将会返回属性所包含值的类型:

typeof document.lastModified; // returns "string"
typeof window.length;         // returns "number"
typeof Math.LN2;              // returns "number"

对于方法和函数,typeof 操作符将会返回如下结果:

typeof blur;        // returns "function"
typeof eval;        // returns "function"
typeof parseInt;    // returns "function"
typeof shape.split; // returns "function"

对于预定义的对象,typeof 操作符将会返回如下结果:

typeof Date;     // returns "function"
typeof Function; // returns "function"
typeof Math;     // returns "object"
typeof Option;   // returns "function"
typeof String;   // returns "function"
void

void 运算符运用方法如下:

void (expression)
void expression

void运算符,表明一个运算没有返回值。expression是javaScript表达式,括号中的表达式是一个可选项,当然使用该方式是一种好的形式。

你可以使用void运算符指明一个超文本链接。该表达式是有效的,但是并不会在当前文档中进行加载。

如下创建了一个超链接文本,当用户单击该文本时,不会有任何效果。

Click here to do nothing

下面的代码创建了一个超链接,当用户单击它时,提交一个表单。


Click here to submit
关系操作符 in

in操作符,如果所指定的属性确实存在于所指定的对象中,则会返回true

下面的例子是 in 操作的常见用法。

// Arrays
var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
0 in trees;        // returns true
3 in trees;        // returns true
6 in trees;        // returns false
"bay" in trees;    // returns false (you must specify the index number,
                   // not the value at that index)
"length" in trees; // returns true (length is an Array property)

// Predefined objects
"PI" in Math;          // returns true
var myString = new String("coral");
"length" in myString;  // returns true

// Custom objects
var mycar = {make: "Honda", model: "Accord", year: 1998};
"make" in mycar;  // returns true
"model" in mycar; // returns true
instanceof

如果所判别的对象确实是所指定的类型,则返回true。

例如, 下面的代码使用instanceof去判断 theDay是否是一个 Date 对象. 因为theDay是一个Date对象, 所以if中的代码会执行.

var theDay = new Date(1995, 12, 17);
if (theDay instanceof Date) {
  // statements to execute
}
表达式

表达式是一组代码的集合,它返回一个值。(译注:定义比较不好理解,看下面的举例就很好懂了。)

每一个合法的表达式都能计算成某个值,但从概念上讲,有两种类型的表达式:有副作用的(比如赋值)和单纯计算求值的。

表达式x=7是第一类型的一个例子。该表达式使用=运算符将值7赋予变量x。这个表达式自己的值等于7。

代码3 + 4是第二个表达式类型的一个例子。该表达式使用+运算符把3和4加到一起但并没有把结果(7)赋值给一个变量。

JavaScript有以下表达式类型:

算数: 得出一个数字, 例如 3.14159. (通常使用 arithmetic operators.)

字符串: 得出一个字符串, 例如, "Fred" 或 "234". (通常使用 string operators.)

逻辑值: 得出true或者false. (经常涉及到 logical operators.)

基本表达式: javascript中基本的关键字和一般表达式。

左值表达式: 分配给左值。

数字和日期 数字对象

内置的Number对象有一些有关数字的常量属性,如最大值、不是一个数字和无穷大的。你不能改变这些属性,但可以按下边的方式使用它们:

var biggestNum = Number.MAX_VALUE;
var smallestNum = Number.MIN_VALUE;
var infiniteNum = Number.POSITIVE_INFINITY;
var negInfiniteNum = Number.NEGATIVE_INFINITY;
var notANum = Number.NaN;

你永远只用从Number对象引用上边显示的属性,而不是你自己创建的Number对象的属性。

下面的表格汇总了数字对象的属性:

数字的属性

属性 描述
Number.MAX_VALUE 可表示的最大值
Number.MIN_VALUE 可表示的最小值
Number.NaN 特指”非数字“
Number.NEGATIVE_INFINITY 特指“负无穷”;在溢出时返回
Number.POSITIVE_INFINITY 特指“正无穷”;在溢出时返回
Number.EPSILON 表示1和比最接近1且大于1的最小Number之间的差别
Number.MIN_SAFE_INTEGER JavaScript最小安全整数.
Number.MAX_SAFE_INTEGER JavaScript最大安全整数.

数字的方法

方法 描述
Number.parseFloat() 把字符串参数解析成浮点数,
和全局方法 parseFloat() 作用一致.
Number.parseInt() 把字符串解析成特定基数对应的整型数字,和全局方法 parseInt() 作用一致.
Number.isFinite() 判断传递的值是否为有限数字。
Number.isInteger() 判断传递的值是否为整数。
Number.isNaN() 判断传递的值是否为 NaN. More robust version of the original global isNaN().
Number.isSafeInteger() 判断传递的值是否为安全整数。

数字类型原型上的一些方法

方法 描述
toExponential() 返回一个数字的指数形式的字符串,形如:1.23e+2
toFixed() 返回指定小数位数的表示形式,var a=123,b=a.toFixed(2)//b="123.00"
toPrecision() 返回一个指定精度的数字。如下例子中,a=123中,3会由于精度限制消失,var a=123,b=a.toFixed(2)//b="123.00"
数学对象(Math)
方法 描述
abs() 绝对值
sin(), cos(), tan() 标准三角函数;参数为弧度
asin(), acos(), atan(), atan2() 反三角函数; 返回值为弧度
sinh(), cosh(), tanh() 双曲三角函数; 返回值为弧度.
asinh(), acosh(), atanh() 反双曲三角函数;返回值为弧度.
pow(), exp(), expm1(), log10(), log1p(), log2() 指数与对数函数
floor(), ceil() 返回最大/最小整数小于/大于或等于参数
min(), max()
返回一个以逗号间隔的数字参数列表中的较小或较大值(分别地)
random() 返回0和1之间的随机数。
round(), fround(), trunc(), 四舍五入和截断函数
sqrt(), cbrt(), hypot() 平方根,立方根,平方参数的和的平方根 
两个参数平方和的平方根
sign() 数字的符号, 说明数字是否为正、负、零。
clz32(), 在32位2进制表示中,开头的0的数量.
imul() 返回传入的两个参数相乘结果的类C的32位表现形式
字符串和文本

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/110306.html

相关文章

  • 判断是否是数组的几种方法— (js基础复习第1期)

    摘要:如果网页中包含多个框架,那实际上就存在两个以上不同的全局执行环境,从而存在两个以上不同版本的构造函数。如果你从一个框架向另一个框架传入一个数组,那么传入的数组与在第二个框架中原生创建的数组分别具有各自不同的构造函数。 1. 首先,typeof肯定是不行的 对于一些基本类型,typeof是可以判断出数据类型,但是判断一些引用类型时候,不能具体到具体哪一种类型 再来复习一下typeof的...

    supernavy 评论0 收藏0
  • React复习进阶 - 高阶组件的使用/配置装饰品模式/新版context的使用

    摘要:所谓高阶组件即使是接受一个组件作为参数返回一个新组件的函数用于提高组件的自身能力提高组件复用性普通高阶组件函数将父级属性向下传递并追加新属性为添加样式和木偶组件传入一个组件返回一个函数式组件高阶组件木偶组件我是本体是同样还可以为增加生命周期 所谓高阶组件即使是接受一个组件作为参数, 返回一个新组件的函数, 用于提高组件的自身能力, 提高组件复用性 1.普通高阶组件 HOC函数将父级属性...

    draveness 评论0 收藏0
  • React复习进阶 - 高阶组件的使用/配置装饰品模式/新版context的使用

    摘要:所谓高阶组件即使是接受一个组件作为参数返回一个新组件的函数用于提高组件的自身能力提高组件复用性普通高阶组件函数将父级属性向下传递并追加新属性为添加样式和木偶组件传入一个组件返回一个函数式组件高阶组件木偶组件我是本体是同样还可以为增加生命周期 所谓高阶组件即使是接受一个组件作为参数, 返回一个新组件的函数, 用于提高组件的自身能力, 提高组件复用性 1.普通高阶组件 HOC函数将父级属性...

    canger 评论0 收藏0
  • JS复习--原型链小结

    摘要:为什么需要原型链为了实现继承,具有相同特性的代码不需要重复编写,放在构造函数里面,实例化的对象都会拥有里面的属性了,也就是可以共享属性和方法。 一段简单代码引入 function Foo() {}; var f1 = new Foo(); showImg(https://segmentfault.com/img/bV4yXs?w=1176&h=944); 1.概念简单理解 Foo...

    Gu_Yan 评论0 收藏0
  • 前端复习笔记--1.html标签复习速查

    摘要:可读性,提高代码的可读性,便于多人的修改维护,提高开发效率。主流浏览器都兼容的新标签,对于及以下版本不认识的新元素,可以使用创建一个没用的元素来解决,例如,也可以使用来解决兼容性问题,详情可参考 概览 showImg(https://segmentfault.com/img/bV5JXT?w=1880&h=1050); 文档章节 导航 表示和主要内容不相关的区域 表示一个独...

    番茄西红柿 评论0 收藏0
  • 前端复习笔记--1.html标签复习速查

    摘要:可读性,提高代码的可读性,便于多人的修改维护,提高开发效率。主流浏览器都兼容的新标签,对于及以下版本不认识的新元素,可以使用创建一个没用的元素来解决,例如,也可以使用来解决兼容性问题,详情可参考 概览 showImg(https://segmentfault.com/img/bV5JXT?w=1880&h=1050); 文档章节 导航 表示和主要内容不相关的区域 表示一个独...

    sorra 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<