Javascript(二) 类型转换 、运算符

类型转换

隐式类型转换
  由于 JavaScript 是弱类型/松散类型的,在任何情况下都可以强制转换

  1. 转换为字符串: 将⼀个值加上空字符串可以轻松转换为字符串类型
            let  num=100;
            let  boo=true;
            let str1=num+"";
            let str2=boo+"";
            console.log(typeof str1) // string
            console.log(typeof str2) // string

     

  2. 转换为数字: 使⽤用一元的加号操作符,可以把字符串转换为数字
            let str3="haha";
            let num3=+str3;
          
            let boo3=true;
            let num4=+boo3;
            console.log(typeof num3); //number
            console.log(typeof num4); //number

     

  3. 转换为布尔值: 使⽤否操作符(!)两次,可以把一个值转换为布尔型。
            let str1="100";
            let str2="haah";
            let num=200;
            let num2=0;
    
            let boo1=!!str1;
            let boo2=!!str2;
            let boo3=!!num;
            let boo4=!!num2;
            console.log(boo1);// true
            console.log(boo2);// true
            console.log(boo3);// true
            console.log(boo4);// false

    显式类型转换

使⽤ JavaScript 的包装型的构造函数进行类型转换

  let str="666";
        let str2="hahah";
        let boo=true;

        let num1=Number(str);
        let num11=Number(str2);
        let num2=Number(boo);

        console.log(num1); //666
        console.log(typeof num1);//  number

        console.log(num11); //NaN
        console.log(typeof num11);// number

        console.log(num2);// 1
        console.log(typeof num2);// number

 

        let str=String(100);
        let str2=String(true);

        console.log(str); // 100
        console.log(str2);// true
        console.log(typeof str);// string
        console.log(typeof str2);// string
        let str="hd";
        let str2="";
        let num1=916;
        let num2=0;

        let boo1=Boolean(str);
        let boo2=Boolean(str2);
        let boo3=Boolean(num1);
        let boo4=Boolean(num2);

        console.log(boo1);// ture
        console.log(boo2);// falese
        console.log(boo3);// true
        console.log(boo4);// false

使用数据类型的转换函数进行类型转换

        let  num=100;
        let boo=true;

        let str=num.toString();
        let  str2=boo.toString();
        console.log(str);//100
        console.log(str2);//true

        console.log(typeof str);// string
        console.log(typeof str2);// string
        let str1="99.745";
        let str2="100haha234";
        let boo=true;

        let int1=parseInt(str1);
        let int2=parseInt(str2);
        let int3=parseInt(boo);

        console.log(int1);// 结果:99
        console.log(int2);// 结果:100
        console.log(int3);// 结果:NaN
         let  str="100.345";
         let flo=parseFloat(str);
         console.log(flo);// 100.345

运算符

JavaScript 提供了了⼀组⽤用于操作数据值的运算符。

  • 算数运算符(+ - * / % ++ --)
  • 比较运算符(> >= < <= == != === !==)
  • 逻辑运算符(&& || !)
  • 赋值运算符(= += -= *= /= %= )
  • 字符串连接运算符(+)
  • 三元运算符(? :)
  • 特殊运算符(typeof instanceof delete)

算数运算符

给定 A=20 ,B=10 条件,下述表格描述算数运算符:
 

 

 

算数运算符的基本操作⽐较简单,但下述情况需要特别注意:

  • 如果运算数中的一个或两个是字符串类型,JavaScript 会⾃动转换为数字值,再进行计算。
  • 如果运算数中的一个或两个是字符串类型,但其中的字符不是数字,JavaScript 会自动转换数字值失败,得到 NaN 结果。 任何一个运算数是 NaN,结果都是 NaN。
  • 布尔值 false 和 true 会转换为 0 和 1 进行计算

求余运算符
求余运算符,用于计算两个运算数整除后的余数。
 

console.log( 10 % 3 );// 输出 1
console.log( -10 % 3 );// 输出 -1
console.log( 10 % -3 );// 输出 1
console.log( -10 % -3 );// 输出 -1

// 余数的符号和被除数相同

自增运算符

自增运算符,用于整数值逐次加 1。分别具有两种⽤用法:

前置型:⾃增运算符位于运算数之前。先加 1,再赋值。

后置型:自增运算符位于运算数之后。先赋值,再加 1。
 

var x = 3; 
console.log( x++ );// 输出 3 
console.log( x );// 输出 4
var y = 3;
 console.log( ++y );// 输出 4
 console.log( y );// 输出 4

自减运算符
 

自减运算符,用于整数值逐次减 1。分别具有两种⽤用法:

前置型:自增运算符位于运算数之前。先减 1,再赋值。

后置型:自增运算符位于运算数之后。先赋值,再减 1。
 

var x = 3; 
console.log( x-- );// 输出 3 
console.log( x );// 输出 2
var y = 3; 
console.log( --y );// 输出 2 
console.log( y );// 输出 2

比较运算符
给定 A=20 ,B=10条件,下述表格描述比较运算符:

 

全等与全不等

var x = 10; 
var y = '10';
console.log( x == y );// 输出 true 
console.log( x === y );// 输出 false 
console.log( x != y );// 输出 false 
console.log( x !== y );// 输出 true

isNaN 函数
isNaN() 函数⽤于判断其参数是否为 NaN(非数字值)。
多用于检测使用类型转换函数进行数据类型转换后的结果是否为合法的数字值。

值得注意的是: NaN 与任何值(包括自身)进⾏比较,结果都是 false。不能使⽤ == 或者 === 运 算符判断某个值是否是 NaN,而只能使⽤用isNaN() 函数。
 

        console.log(isNaN(parseInt('123.45a')));// 输出 false
        console.log(isNaN('123.45a'));// 输出 true
        console.log(isNaN(Number('123.45a')));// 输出 true

逻辑运算符

给定 A=20 B=10条件,下述表格描述⽐比较运算符:

逻辑与运算符
 

console.log( false && true );// 输出 false
 console.log( true && true );// 输出 true
// 数字值 1 和 0 转换为布尔值 true 和 false 
console.log( 1 && 0 );// 输出 false
// 空字符串串转换为布尔值 false,⾮非空字符串串转换为布尔值 true 
console.log( "" && "atguigu" );// 输出 false

逻辑或运算符

console.log( false || true );// 输出 true 
console.log( false || false );// 输出 false
// 数字值 1 和 0 转换为布尔值 true 和 false 
console.log( 1 || 0 );// 输出 true
// 空字符串串转换为布尔值 false,⾮非空字符串串转换为布尔值 true 
console.log( "" || "atguigu" );// 输出 true

逻辑非运算符

console.log( !true );// 输出 false
console.log( !1 );// 输出 false
console.log( !"atguigu" );// 输出 false

值得注意的是: 能被转换为 false 的值有null, 0, NaN, 空字符串串("") 和 undefined。
 

逻辑短路路原则
 

所谓短路路原则,就是只要确定运算符前面的运算数为 true 或 false,就可以确定返回结果为 true 或 false。
逻辑与运算符

  • 逻辑与运算符前面为false,结果都将返回逻辑与运算符前面的值。
  • 逻辑与运算符前面为true,结果都将返回逻辑与运算符后面的值。
       console.log(true && true);// true
       console.log(false && true);// false
       console.log("haha" && "yaoyao");// yaoyao

逻辑或运算符

  • 逻辑或运算符前面为false,结果都将返回逻辑或运算符后面的值。
  • 逻辑或运算符前面为true,结果都将返回逻辑或运算符前面的值。
       console.log(true || true);//true
       console.log(false || true);//true
       console.log("haha" || "yaoyao");//haha 
       console.log('string' && 0 && true);// 0
       console.log('' || 1 || false);// 1

赋值运算符

赋值运算符⽤用于为变量量或属性进⾏行行赋值操作

var atguigu = "atguigu";// 将字符串串 "atguigu" 赋值给变量量 atguigu 
var obj.x = 1;// 将数字值 1 赋值给 obj 对象的 x 属性

赋值运算符就是将右边运算数的值赋给左边运算数。
 

var C = A + B;// 将A+B的值赋给 c

 

值得注意的是: C += A由于运⾏行行时可以进⾏行行优化,执⾏行行效率都要优于C = C + A。
 

字符串连接运算符
字符串连接运算符使用的是加法运算符(+)。 

  • 两个运算数都是数字值时,"+"⽤用于两个运算数相加计算。
  • 两个运算数中的⼀一个是字符串串时,"+"⽤用于字符串串连接计算。
       let  str="haha";
       let  str2="5";
       let  str3="2";
       let  str4=3;
       let  str5=1;
       console.log(str+str2);//haha5
       console.log(str2+str3);//52
       console.log(str4+str5);//4

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值