吃饭用的前端

JS语法基础(二)

2019-03-28  本文已影响0人  CNLISIYIII

(一)运算符

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。

上一篇 下一篇

猜你喜欢

热点阅读