(1)条件语句
1、if~else
语句含义:如果…就…,否则…就…
if(条件){
//如果为true,则执行此处代码;
}else{
//否则就执行此处代码;
}
var isRain = true;
if(isRain){
document.write("Raining now!");
}else{
document.write("No rain!");
}
2、多重判断:if~else if~ else
if(条件){
//如果为true,则执行此处代码;
}else if(条件){
//否则就执行此处代码;
}else{
//前面都不满足则就执行此处代码;
}
var num = prompt("请输入一个整数:");
if(!num*1){
alert("输入的数字为零!");
}else if(num*1>0){
aler("输入的数为正整数");
}else{
alert("输入的数为负整数");
}
(2)数据的类型转换
数据类型转换有两种方式:
1、隐式转换:js内置自动转换类型
var a = 'aa';
var b = 'bb';
// a+b的结果是"aabb", "aabb"在这里自动转换成true, 这种类型转换称为隐式转换
if (a+b) {
console.log('xxxxxxx');
} else {
console.log('yyyyyyyy');
}
2、显式转换
-
转数字:Number()、变量名*1
* boolean转数字:true为1,false为0 空字符串为0 * string转数字=>数字字符串为数字 非数字字符串为NaN * undefined转数字:NaN * null转数字:0 * object转数字:NaN
//在控制台运行
true*1; //1
false*1; //0
var str1 ='';
str1*1; //0
var str2 = '123';
str2*1; //123
var str3 = 'abc';
str3*1; //NaN
undefined*1; //NaN
null*1; //0
var obj = {};
obj*1; //NaN
-
转字符串:String()、变量名+“”
* number转字符串:2为"2" * boolean转字符串:true为"true",false为"false" * undefined转字符串:"undefined" * null转字符串:"null" var obj = {a:2};obj+""等于"[object,object]" * object转字符串=> {}+""等于0
//在控制台输出
var num = 2;
num+""; //"2"
var bool1 = true;
bool+""; //"true"
var bool2 = false;
bool2+""; //"false"
undefined+""; //"undefined"
null+""; //"null"
var obj = {a:2};
obj+""; //"[object,object]"
{}+""; //0
-
转布尔:Boolean()、!!变量名
整数小数为true * number转布尔=> Infinity(无穷大)为true 0为false NaN为false 空字符串为false * string转布尔=> 多个空格的字符串为true 非空字符串为true * undefined转布尔:false * null转布尔:false * object转布尔:true
//在控制台输入
var num1 = 8;
!!num1; //true
var num2 = 8.8;
!!num2; //true
!!Infinity; //true
!!0; //false
!!NaN; //false
var str1 = '';
!!str1; //false
var str2 = ' ';
!!str2; //true
var str3 = 'aa33';
!!str3; //true
!!undefined; //false
!!null; //false
var obj = {name:'zhangsan'};
!!obj; //true
(3)运算符
1、算术运算符
- +(加)
- -(减)
- *(乘)
- /(除)
- %(取余)
* 相加的时候,有一个数为字符串,则+表示字符串拼接,两值相加为字符串;
* 用户从网页上输入的都是字符串
var a = 20;
var b = 7;
// 对a和b进行5中运算
console.log(a+b);
console.log(a-b);
console.log(a*b);
console.log(a/b);
console.log(a%b);
2、关系运算符
也就是比较运算符:>, >= ,< , <= , == , === , != , !==
// >大于
// <小于
// >=大于等于
// <=小于等于
** != 在表达式两边的数据类型不一致时,会隐式转换为相同数据类型,然后对值进行比较.
!== 不会进行类型转换,在比较时除了对值进行比较以外,还比较两边的数据类型, 它是恒等运算符===的非形式 **
//在控制台输入
var str = '123';
var num = 123;
str != num; //false 先转换为相同类型后值相同
str !== num; //true 两值和类型都不相同
** ==: 会进行隐式类型转换, 然后比较值
=== 全(恒)等于: 会先比较类型, 然后再比较值**
var str = '123';
var num = 123;
str == num; //true 先转换为相同类型后值相同
str === num; //false 两值和类型都不相同
3、逻辑运算符
- 逻辑非:!
值为true或false,如果变量不是boolean类型,会先自动转换成boolean类型,然后再取反- ! 取反
- !! 取反再取反
//取反!
var str1 = '';
if(str1 ===''){
console.log(111);//console数字可以打印出来,如果是其他字符自动认为是变量,会报错
}else{
console.log(222);
}
//在前端开发中,一般不会用以上写法,而是用以下写法
var str2 = '';
if(!str2){
console.log(111);
}else{
console.log(222);
}
//取反再取反!!
var num = 100;
if (!!num) {
console.log(111);
} else {
console.log(222);
}
- 逻辑与:&&
- 参与运算的都为boolean类型时,其中有一个值为false,整个表达式为false;
- boolean或其他类型参与运算时,前者值为true取后者值,否则取前者值。
// 参与运算的都是布尔类型
console.log(true && true); // true
console.log(true && false); // false
console.log(false && true); // false
console.log(false && false); // false
var num1 = 100;
var num2 = 0;
console.log(num1 && num2); // 0, 不是false
console.log(num2 && num1); // 0
//实际应用
var a = 'web';
var b;
//console.log(a && c); // 报错
console.log(b && c); // undefined 先检查第一个变量, 若为false,后面不再检查
- 逻辑或:||
- 参与运算的都为boolean类型时,其中有一个值为true,整个表达式为true;
- boolean或其他类型参与运算时,前者值为true取前者值,否则取后者值。
true || true; // true
true || false; // true
false || true; // true
false || false; // false
var num1 = 100;
var num2 = 0;
num1 || num2; // 100
num2 || num1; // 100
var a = 'web';
var b;
a || c; // web
b || c; // 报错
4、一元运算符
++ :++在前,先自增后运算;++在后先运算后自增;
– :–同理。
var i = 5;
var j = 5;
i++;
++j;
var a = 5;
var b = 5;
a--;
--b;
5、复合赋值运算符
-+ , += , *= , /= ,%=
var a = 10;
// a=a+10的另一种写法
a += 10;
// a=a-10的另一种写法
a -= 10;
// a=a*10的另一种写法
a *= 10;
// a=a/10的另一种写法
a /= 10;
// a=a%10的另一种写法
a %= 10;
6、运算符的优先级
() > 自增自减 > 算术 > 关系 > 逻辑 > 赋值
var a = 10;
var b = 10;
20 + 'abc' && 21 - ++a == 10;
20 + ('abc' && 21) - ++b;
20 + ('abc' && 21) - ++a;
//先括号后自增,然后算术再比较,最后逻辑
//结果是:true 30 29