续JavaScript基础语法1
文章目录
三丶 JavaScript运算符和表达式
3.1 算术运算符
3.1.1 加法运算符
var box = 1 + 2; //等于3
var box = 1 + NaN; //NaN,只要有一个NaN 就为NaN
var box = Infinity + Infinity; //Infinity
var box = -Infinity + -Infinity; //-Infinity
var box = Infinity + -Infinity; //NaN,正无穷和负无穷相加等NaN
var box = 100 + '100';//100100,字符串连接符,有字符串就不是加法
var box = '您的年龄是:' + 10 + 20; //您的年龄是:1020,被转换成字符串
var box = 10 + 20 + '是您的年龄'; //30 是您的年龄,没有被转成字符串
var box = '您的年龄是:' + (10 + 20); //您的年龄是:30,没有被转成字符串
3.1.2 减法运算符
var box = 100 - 70; //等于30
var box = -100 - 70 ;//等于-170
var box = -100 - -70; //-30,一般写成-100 - (-70)比较清晰
var box = 1 - NaN; //NaN,只要有一个NaN 就为NaN
var box = Infinity - Infinity; //NaN
var box = -Infinity - -Infinity;//NaN
var box = 100 - true; //99,true 转成数值为1
var box = 100 -false; //100,false转成数值为0
var box = 100 - ''; //100,''转成了0
var box = 100 - '70'; //30,'70'转成了数值70
var box = 100 - null; //100,null 转成了0
var box = 100 - 'Lee'; //NaN,Lee 转成了NaN
3.1.3 乘法运算符
var box = 100 * 70; //7000
var box = 100 * NaN; //NaN,只要有一个NaN 即为NaN
var box = Infinity * Infinity; //Infinity
var box = -Infinity * Infinity ; //-Infinity
var box = -Infinity * -Infinity ; //Infinity
var box = 100 * true; //100,true 转成数值为1
var box = 100 * ''; //0,''转成了0
var box = 100 * null; //0,null 转成了0
var box = 100 * 'Lee'; //NaN,Lee 转成了NaN
3.1.4 除法运算符
var box = 100 / 70; //1.42....
var box = 100 / NaN; //NaN
var box = Infinity / Infinity; //NaN
var box = -Infinity / Infinity ; //NaN
var box = -Infinity / -Infinity; //NaN
var box = 100 / true; //100,true 转成1
var box = 100 / ''; //Infinity,
var box = 100 / null; //Infinity,
var box = 100 / 'Lee'; //NaN
3.1.5 取模运算符
var box = 10 % 3; //1,余数为1
var box = 100 % NaN; //NaN
var box = Infinity % Infinity; //NaN
var box = -Infinity % Infinity ; //NaN
var box = -Infinity % -Infinity; //NaN
var box = 100 % true; //0
var box = 100 % ''; //NaN
var box = 100 % null; //NaN
var box = 100 % 'Lee'; //NaN
3.1.6 JS里面的算数运算规则
- 任意数据类型和字符串进行加法运算,都是字符串的拼接
- 任意数据类型和NaN进行四则运算,结果都是NaN
- 当true和false参与运算,true转换为1,false转换为0
- 除+运算外,数值类型字符串参与运算,都转换为数值;但是非数值类型字符参与运算,结果都是NaN
- 除+运算外,空字符串转换为0
- null在任意运算都为0,在取模运算时null作为初始结果为NaN;
- 0可以作为除数,得到结果都是无穷大
- 0参与取余运算,得到结果都是NaN
3.2 一元运算符
递增和递减运算符概述:
- 如果需要反复给数字变量添加或减去1,可以使用递增(++)和递减( – )运算符来完成。
- 在 JavaScript 中,递增(++)和递减( – )既可以放在变量前面,也可以放在变量后面。放在变量 前面时,我们可以称为前置递增(递减)运算符,放在变量后面时,我们可以称为后置递增(递 减)运算符。
- 递增和递减运算符必须和变量配合使用。
3.2.1 递增运算符(++)
- ++num 前置递增,就是自加1,类似于 num = num + 1,但是 ++num 写起来更简单。
- num++ 后置递增,就是自加1,类似于 num = num + 1,但是 num++ 写起来更简单。
- 使用口诀:++在前,整体是一个新值,++在后,整体是一人旧值
前置递增运算符(++num)
var num1 = 5;
++ num1; // num1 = 6;
var num2 = 6;
console.log(num1 + ++ num2); // 13
后置递增运算符(num++)
var num1 = 5;
num1 ++; // num1 = 6
var num2 = 6
console.log(num1 + num2 ++); // 12
示例:
var a = 1; var b = ++a + ++a; console.log(b);//5
var a = 1; var b = a++ + ++a; console.log(b);//4
var a = 1; var b = a++ + a++; console.log(b);//3
var a = 1; var b = ++a + a++; console.log(b);//4
前置和后置的区别:
在没有赋值操作,前置和后置是一样的。但在赋值操作时,如果递增或递减运算符前置,那么前置 的运算符会先累加或累减再赋值,如果是后置运算符则先赋值再累加或累减。运算的时候也是一样;
其他类型应用一元运算符的规则:
var box = '89'; box++; //90,数值字符串自动转换成数值
var box = 'ab'; box++; //NaN,字符串包含非数值转成NaN
var box = false; box++; //1,false 转成数值是0,累加就是1
var box = 2.3; box++; //3.3,直接加1
3.2.2 递减运算符(–)
同上
3.3 赋值运算符
var t=5; // 其意义就是把数值5赋给变量t;
var k=x+y+5; // 其意义就是把表达式x+y+5最后的值赋给变量k。
var box = 100;
box += 100; // 200,+=代替box+100
3.4 关系运算符(比较运算符)
比较原则:
- 若一个是数值字符串,一个是数值,字符串会自动转换成数值进行比较。
- 若两个都是数值字符串,则比较首个数字的大小。
- 布尔值的false和true会转换成0和1。
- 两个操作数都是数值,则数值比较。
- 两个操作数都是字符串,则比较两个字符串对应的字符编码值。
字符转ascii码:用charCodeAt();
在相等和不等的比较上,如果操作数是非数值,则遵循以下规则
- 一个操作数是布尔值,则比较之前将其转换为数值,false 转成0,true 转成1;
- 一个操作数是字符串,则比较之前将其转成为数值再比较;
- 不需要任何转换的情况下,null 和undefined 是相等的;
- 一个操作数是NaN,则==返回false,!=返回true;并且NaN 和自身不等;
- 在全等和全不等的判断上,比如值和类型都相等,才返回true,否则返回false。
特殊值对比表:
表达式 值
null == undefined true
'NaN' == NaN false
5 == NaN false
NaN == NaN false
false == 0 true
true == 1 true
true == 2 false
undefined == 0 false
null == 0 false
'100' == 100 true
'100' === 100 false
3.4.1 和=的区别
相等运算符 == :判断两个操作数是否相等。不同的数据类型会自动转换为相等的数据类型再做比较。
等同运算符=== :全等(值和类型),严格意义的相等,两个操作数的值和他们的类型必须完全一致。
var result = '55' == 55; // true
var result = '55' === 55; // false 值相等,类型不相等
var result = 55 === 55; // true
3.5 逻辑运算
3.6 三目运算符
三目运算符,又叫三元条件运算符
三元条件运算符其实就是后面将要学到的if 语句的简写形式。
根据条件在两个语句中执行其中的一个,使用符号 ?:
语法如下:条件表达式?语句1:语句2
var box = 5 > 4 ? '对' : '错'; //对,5>4 返回true 则把'对'赋值给box,反之,把错赋给box。
// 判断一个年龄是否成年, 当年龄超过18 返回 成年 否则返回未成年
var age = 19;
// console.log( age >= 18 ? '成年' : '未成年' );
var msg = age >= 18 ? '成年' : '未成年';
console.log(msg);
3.7 运算符优先级
未完待续…