码迷,mamicode.com
首页 > Web开发 > 详细

JS运算符

时间:2019-08-31 17:35:06      阅读:84      评论:0      收藏:0      [点我收藏+]

标签:函数   布尔   逻辑   code   比较   meta   变量   ext   优先级   

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
       
typeof 的返回值是字符串,取值范围是{Number,Boolean,String,NUll,object,undefined}
1、 加法:(字符串相加比较特殊) res = 1 + true; 2 res = 1 + null; 1 res = 1 + NaN; NaN 任何数与NaN运算都是NaN res =‘123‘+ ‘456‘; "123456" 字符串拼接 res =123+ ‘456‘; "123456" 任何值和字符串相加,会先转成字符串后拼接 res = true + "123"; "true123" res = null + ""; "null" 任何值加一个空串即可转换成字符串,底层是String()函数实现 res = 1 + 2 + ‘3‘; //33 res = ‘1‘ + 2 + 3; //123 console.log("res="+res); 2、 减法 res = 100 - ‘1‘; 99 字符串除了在加法中会转换成字符串,在其他运算符中会转换成数字 res = 100 * ‘1‘; 100 字符串除了在加法中会转换成字符串,在其他运算符中会转换成数字 res = 100 * undefined ; NaN undefined不是一个数,是一个NaN, 任何值和NaN运算都是NaN res = 100 * null ; 0 null转换成0 任何值做 - * / 运算都会转成Number,利用这个可以做隐式类型转换 var a = ‘123‘; a = a -0; a = a /1; 此时a就变成数字了,底层原理和Number()函数实现 3、 一元运算符 + 正号 - 负号 对于非Number值可以使用+将其转换成Number,- 也可以,不过会改变其值 var a = ‘123‘; a = +a; 此时a就变成数字了,底层原理和Number()函数实现 var a = 1 + +‘2‘ + 3; 6 +‘2‘ 正号把‘2‘转成Number 2了
4、自增自减 5、 逻辑运算符 <script type="text/javascript"> /* * && || 非布尔值的情况 * - 对于非布尔值进行与或运算时, * 会先将其转换为布尔值,然后再运算,并且返回原值 * - 与运算: * - 如果第一个值为true,则必然返回第二个原值,因为其值有第二个值决定 * - 如果第一个值为false,则直接返回第一个值, 因为第二个已经不起作用,无论怎么样,都是false * * - 或运算 * - 如果第一个值为true,则直接返回第一个原值,因为第二个已经不起作用, * - 如果第一个值为false,则返回第二个原值。因为其值有第二个值决定 * */ //true && true //与运算:如果两个值都为true,则返回后边的 //var result = 5 && 6; 6 //与运算:如果两个值中有false,则返回靠前的false //false && true //result = 0 && 2; 0 //result = 2 && 0; 0 //false && false // result = NaN && 0; NaN // result = 0 && NaN; 0 //true || true //如果第一个值为true,则直接返回第一个值 // result = 2 || 1; 2 // result = 2 || NaN; 2 // result = 2 || 0; 2 //如果第NaN一个值为false,则直接返回第二个值 //result = NaN || 1; 1 //result = NaN || 0; 0 // result = "" || "hello"; hello //result = -1 || "你好"; -1 console.log("result = "+result); 6、 关系运算符 任何值和NaN比较都是false //任何值和NaN做任何比较都是false //console.log(10 <= "hello"); //false //console.log(true > false); //true //比较两个字符串时,比较的是字符串的字符编码 //console.log("a" < "b");//true //比较字符编码时是一位一位进行比较 //如果两位一样,则比较下一位,所以借用它来对英文进行排序 //console.log("abc" < "bcd");//true //比较中文时没有意义 //console.log("戒" > "我"); //true //console.log("1" < "5"); //true 字符串数字是一位一位进行比较 1的ASCCI码小5的 //console.log("11" < "5"); //true //如果比较的两个字符串型的数字,可能会得到不可预期的结果 //注意:在比较两个字符串型的数字时,一定一定一定要转型 console.log("11123123123123123123" < "5"); //true 97 < 100 console.log("11123123123123123123" < +"5"); //false 97 < 5 <=> console.log("11123123123123123123" < 5); //false 97 < 5 在字符串中使用转义字符输入unicode 编码 \u四位16进制编码 console.log("\u2620"); //骷髅头 7、 相等运算符 相等,不比较类型,只比较值 当使用==来比较两个值时,如果值的类型不同, 则会自动进行类型转换,将其转换为相同的类型(数值型) 然后在比较 //console.log(true == "1"); //true //console.log(null == 0); //false null未转化成0 /* * undefined 衍生自 null * 所以这两个值做相等判断时,会返回true */ //console.log(undefined == null); NaN不和任何值相等,包括他本身 //console.log(NaN == NaN); //false var b = NaN; //判断b的值是否是NaN //console.log(b == NaN); 不能这样判断b /* * 可以通过isNaN()函数来判断一个值是否是NaN * 如果该值是NaN则返回true,否则返回false */ //console.log(isNaN(b)); 8、不相等,不比较类型,只比较值 * 不相等用来判断两个值是否不相等,如果不相等返回true,否则返回false * - 使用 != 来做不相等运算 * - 不相等也会对变量进行自动的类型转换,如果转换后相等它也会返回false * * //console.log(10 != 5); //true //console.log(10 != 10); //false //console.log("abcd" != "abcd"); //false //console.log("1" != 1);//false * === * 全等 * - 先比较类型,再比较值 * !== * 不全等 * - 用来判断两个值是否不全等,和不等类似,不同的是它不会做自动的类型转换 * 如果两个值的类型不同,直接返回true //console.log("123" == 123);//true //console.log("123" === 123);//false //console.log(null == undefined);//true 不比较类型,* undefined 衍生自 null //console.log(null === undefined);//false 类型不同 console.log(1 != "1"); //false console.log(1 !== "1"); //true 类型不同 9、条件运算符 10、 运算符优先级 && > || </head> <body> 网页中使用Unicode编码 &#10进制编码 2620的十进制是9760 <h1>&#9760</h1> 骷髅头 </body> </html>

 

JS运算符

标签:函数   布尔   逻辑   code   比较   meta   变量   ext   优先级   

原文地址:https://www.cnblogs.com/luoxuw/p/11439448.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!