(一)运算符
1.逻辑运算符
逻辑 与 | 且:&&
语法:条件1 && 条件2 (运算结果也是布尔值)
优先级:比较运算符>逻辑运算符>赋值运算符。
规则:两端条件都为true时,结果才是true,否则结果是false。
逻辑 或:||
语法:条件1 || 条件2
规则:两端条件都为false时,结果是false,否则结果都为true。
逻辑 非:! (或取反运算)
语法:!条件
规则:有一个感叹号,结果就对条件取一次相反。
2.一元运算符
一元运算符:运算符仅仅运算一种数据;(自增、自减、取反)
取反:!true
自增:++(让变量自增,针对变量)
前置自增:++变量名
后置自增:变量名++
结果:变量会自增1。
后置自增和前置自增在针对变量本身时没有区别。
前置自增在独立输出(++b)或参与其他运算时,先自身+1,然后再返回表达式中。先自增1再使用。
分解过程:b = b + 1; b = 11; console.log(b);
后置自增在独立输出(c++)或参与其他运算时,先把原有值返回表达式中,再自增。先使用后自增1。
分解过程:c = 10; console.log(c); c = c + 1;
二元运算符:运算符可以运算两种数据;(算数运算符、比较运算符、逻辑运算符都是二元运算符)
3.数据类型的转换
任何数据和字符串相加,表示拼接。
var age = prompt('请输入年龄');
alert(age + 100); //输入5时,结果输出5100
强制转换
转字符串:
方法1:变量.toString();
undefined和null不能调用toString()
var a;
var a = null;
var r = a.toString(); //报错
console.log(r);
console.log(typeof r); //报错
方法2:String(其他数据);
console.log( typeof String(10) )
console.log( typeof String(true) )
console.log( typeof String(unll) )
转数字:
Number(其他数据);
//字符串数值转数字(使用较多)
console.log( Number('123') )
console.log( typeof Number('123') );
//非字符串数值转数字
console.log( Number('abc') ) ; //结果为NaN
console.log( typeof Number('abc') );
console.log( Number('123abc') ) ; //结果为NaN
//布尔值转数字
console.log( Number(true) ) ; //结果为1
console.log( Number(false) ) ; //结果为0
console.log( typeof Number('true') );
//undefined 和 null转数字
console.log( Number(undefined) ) ; //结果为NaN
console.log( Number(null) ) ; //结果为0
转数字为整数或小数:
//转换成整数。
console.log( parseInt(num) ) ; //若num=3.14则运行结果为3
console.log( parseInt('3.14') ) ;
console.log( parseInt('3.14ab') ) ; //结果为3
console.log( parseInt('ab3.14') ) ; //结果为NaN
console.log( parseInt('100px') ) ; //结果为100。将像素转换成数字
若转换的数据最前面是数值时,会提取前面的数字。
//转换成整数
console.log( parseFloat('3.14') ) ; //3.14
console.log( parseFloat('3.14abc') ) ; //3.14
console.log( parseFloat('abc3.14') ) ; //NaN
转布尔值:
Boolean(其他数据)
console.log( Boolean('') ) ;
console.log( Boolean('0') ) ;
console.log( Boolean('undefined') ) ;
console.log( Boolean('NaN') ) ;
console.log( Boolean('null‘) ) ;
//以上结果都为false
console.log( Boolean(-1) ) ;
console.log( Boolean(infinity) ) ;
//只要括号里的值不为空,结果就为true
隐式转换
任何数据和字符串相加都会自动转换成String类型
var age = '5' + 100;
console.log(age); // '5' + '100 '结果为 5100
var r = '5' + true;
console.log(r); //结果为 5true
var r = '5' + -100;
console.log(r); //结果为 5-100
转数字:任何数据在做加减乘除算数运算时(除了和字符串相加以外),或者任何数据在和数字比较时,其他数据都会自动转换成Number类型。
//算数运算
var r = '1' - 1; //相当于Number('1') - 1, 结果为0
var r = '10' * ‘2’; //相当于Number('10') * Number('2'), 结果为20
console.log(r);
var r = '我' * ‘你’; //相当于Number('我') * Number('你'), 结果为NaN
var a;
var r = a * 2; //Number(undefined), 结果为NaN
console.log(r);
任何数据和NaN做算数运算时,结果都是NaN。
//比较运算
console.log('1' > 2); // '1' -> 1, 1>2, 结果为false
console.log(true < 2); // Number(true), 1>2, 结果为true
console.log(NaN == NaN); //结果为false。NaN和自身比较也是不相等的
console.log(NaN === NaN); //结果为false
NaN和谁做比较结果都是false
转布尔:
console.log ( !1 ); // 1 -> Boolean(1),结果为true。
console.log ( !0 ); // 0 -> Boolean(0),结果为false。
console.log ( !'张三' ); // '张三' -> Boolean(1),结果为true。
(二)分支结构
1.if
2.if - else
3.三元运算符:
表达式?结果1:结果2;
4.if - else if - else
5.switch:
等值比较时是全等比较(===比较类型和值)
switch(传入的值) {
case1:
console.log('周1');
break; //解决case穿透性,结束switch结构。
case2:
console.log('周2');
break;
case3:
console.log('周3');
break;
default:
console.log('输入不合法') //都不满足,执行default。
网友评论