做视频特技的网站,建设网站需要数据库备份,上海外贸服装一条街,电子商务网站建设子项目内容---语法 上一小节---数据类型 本小节 操作符---流程控制语句---理解函数 操作符--操作数据值的操作符--算术#xff08;如加减#xff09;、位操作符、关系、相等--ECMAScript操作符可以适用于很多类型的值--在用于对象时#xff0c;会先调用对象的valueOf()和#xff…内容---语法 上一小节---数据类型 本小节 操作符---流程控制语句---理解函数 操作符--操作数据值的操作符--算术如加减、位操作符、关系、相等--ECMAScript操作符可以适用于很多类型的值--在用于对象时会先调用对象的valueOf()和或toString()方法以便取得可操作的值 一元操作符--只能操作一个值 --递增操作符 --递减操作符 ----都有前置和后置 var age 11;age; //12age; //12age; //13--age; //12age--; //12age; //11 一元加减操作符----不变-取负--不仅仅适用于整数字符串布尔值浮点数对象都适用于--等同于Number()方法的效果-再取负数--对于对象先调用valueOf()和或toString方法再转换值 1 0.1; //0.1
2 -0.1; //-0.1
3 z; //NaN
4 var o {
5 valueOf:function() {
6 return 2;
7 }
8 }
9 o; //2 位操作符--按照内存中表示数值的位来操作值--ECMAScript中数值都是以IEEE754 64位格式存储--不直接操作64位的值而是先转换成32位整数操作完转回64 --有符号整数前31位 表示值第32位表示符号0为正1为负--二进制存储--负数使用二进制补码存储 --正数的原码反码补码 --负数--反码符号位不变其余各位取反--补码符号位不变其余各位取反再加一--补码符号位不变从前面按位取反最后一个1即后面的0不变 --ECMAScript会尽力向我们隐藏这些信息--当我们想要二进制表示负数时--我们看到的只是这个负数决定之的二进制码前面加了负号 var num -18;num.toString(); //-10010,而不是-01110 --ECMAScript所有整数默认有符号位 --对NaN,Infinity值位操作会被当成0处理--对非数值位操作会使用Number()方法 按位非NOT~--~波浪线表示--按位取反包括符号位--浮点数小数点后会被忽略 var num1 25; //0 0*26 11001 二进制var num2 ~num1; //1 1*26 00110 二进制负数的补码负数的存储形式mun2; //-26 转化为负数可见形式~1; //-2~1.9; //-2 --本质 操作数的负值减1 按位与AND-- num num--两个操作数每一位对其进行与操作25 25 //2525 ~25 //025 -26 //0 按位或OR-- num | num--两个操作数每一位对其进行或操作 25 | 25 //2525 | -26 //-1 每一位全是-125 | ~25 //-1 每一位全是-1 按位异或XOR-- num ^ num-- 不同为真1相同为假0 左移-- num index-- 左移不影响符号位-- 除符号位其余位向左移动index个位数用0填补空位 4 1 //8 100 - 10002 5 //64 10 - 1000000 有符号右移-- num index-- 右移不影响符号位-- 除符号位其余位向右移动index个位数用符号位填补空位 8 1 //4 1000 - 10064 5 //2 1000000 - 10 -5 1 //-3 无符号右移 -- num index -- 影响符号位-- 所有位向右移动index个位数用0填补空位 64 5; //2-64 5; //134217726布尔操作符 --非NOT、与AND、或OR逻辑非 -- !x -- 可用于所有类型都会返回一个布尔值逻辑非对其求反 规则 --对象 false --空字符串 true --非空字符串 false -- 0 true -- 非0包括Infinityfalse -- null true -- NaN true -- undefined true --两个非操作等同于Boolean()函数逻辑与 -- 正常的布尔与操作 当有一个操作数不是布尔值时 --如果第一个是对象则返回第二个操作数 --如果第二个是对象当第一个是true时返回 --如果都是对象则返回第二个 --有一个null 返回null --有一个NaN 返回NaN --有一个undefined 返回undefined --短路操作如果第一个能决定结果,就不再对第二个操作符求值 --即如果第一个为false则无论第二个取任何值都是false逻辑或 -- || 正常的布尔与操作 如果有一个不是布尔值时 --如果第一个是对象 返回之 --如果第一个为false 返回第二个 --两个都是对象返回第一个 --两个都是null 返回null --都是NaN 返回NaN --都是undefined 返回之 --也是短路操作 如果第一个为true 则不会对第二个求值 var res a1 || a2 || a2; --返回一个有值的结果经常使用乘性操作符 --乘法除法求模 --非数值会自动Number()乘法 -- * -- 超过范围返回 Infinity或者-Infinity -- 有一个为NaN 返回NaN -- Infinity * 0 NaN -- Infinity * 非0 Infinity或者-Infinity 取决于有符号数 -- Infinity * Infinity Infinity除法 -- / -- 超过范围返回 Infinity或者-Infinity -- 有一个为NaN 返回NaN -- Infinity / Infinity NaN -- 0 / 0 NaN -- 非零 / 0 Infinity或者-Infinity 取决于有符号数 -- Infinity / 非0 Infinity或者-Infinity 取决于有符号数求模 -- % -- Infinity % num NaN -- num % 0 NaN -- Infinity % Infinity NaN -- num % Infinity num -- 0 % Infinity 0 加性操作符 --也会转换不同的数据类型但是比乘性要复杂加法 -- 当为数值类型时 -- 有一个是NaN 返回NaN -- Infinity Infinity Infinity -- -Infinity -Infinity -Infinity -- Infinity -Infinity NaN -- 0 -0 0 -- -0 0 0 -- 0 0 0 -- -0 -0 -0 如果有一个是字符串 --都是字符串 则拼接 --只有一个是字符串则把另一个转化为字符串再拼接 --转型按照String() 转型函数所以有把某个值 ,等同于String() 减法 -- - -- 有一个NaN 返回NaN -- Infinity - Infinity NaN -- -Infinity - -Infinity NaN -- Infinity - -Infinity Infinity -- -Infinity - Infinity -Infinity -- 0 - 0 0 -- -0 - -0 0 -- 0 - -0 0 -- -0 - 0 -0 --如果不是数值会调用Number()转换 关系操作符 -- 小于、大于、小于等于、大于等于 --返回布尔值 --都是数值则数值比较 --都是字符串则比较字符串对应的字符编码 --如果一个是数值则将另一个转换为数值参照Number()方法 --如果是布尔值也转换 --字符串比较时比较对应位置的每个字符串字符编码 --大写字母65~90[A-Z]小于小写字母97~122[a-z] 奇怪的情况 23 3 //true 23 3 //false a 3 //false NaN 3 //false NaN 3 //false --有一个NaN则不管怎么比较结果都是false -- (null) 0, (undefined) NaN相等操作符 --相等不相等、!、全等不全等、!相等不相等、! -- 会被强制转换再比较相等性 --如果有一个是布尔值则先转换为数值 true-1false-0 --有一个字符串另一个数值则字符串转换为数值 --一个对象另一个不是则调用对象的valueOf()方法 用得到的基本类型比较 --null undefined trueundefined派生自null --在比较相等性之前不能将null,undefined转化为其他值 --有一个为NaNfalse ! true两个都为NaN也是 --对象比较判断是不是同一对象全等和不全等、!推荐使用 --不提前转化类型 --类型不同返回false --nullundefined false --对象比较同相等不相等条件操作符三目运算 variable boolean_expression ? true_value : false_value;赋值操作符 --右边赋值给左边复合赋值操作 --简化赋值操作但是不会带来性能提升 -- -- - -- * -- / -- -- -- var num 10; num num 5; //同 num 5;逗号操作符 --在一条语句中执行多个操作 vat num11, num22,num3, num44; --通常用于声明多个变量可赋值 var num (3, 2, 3, 5, 6); //num6 --在赋值中逗号操作符总会返回表达式中最后一项的值转载于:https://www.cnblogs.com/loveluking/p/9430839.html