小米技术社区
小米技术社区管理员 关于小米

27岁,山西运城人,职业电商经理人,前端开发工作者,从事过网站建设、网络推广、SEO、SEM、信息流推广、二类电商、网络运维、软件开发,等相关电商工作,经验较为丰富,小米技术社区致力于为广大从事Web前端开发的人员提供一些力所能及的引导和帮助 ...[更多]

E-mail:mzze@163.com

Q Q:32362389

W X:xiaomi168527

小米介绍

小米技术社区大牛王飞 关于王飞

27岁,山西运城人,职业电商经理人,网络工程师兼运维,从事过运营商网络建设,企业网络建设、优化。数据中心网络维护等通过,经验丰富,座右铭:当自己休息的时候,别忘了别人还在奔跑。 ...[更多]

E-mail:wf_live@126.com

Q Q:3940019

微博:王小贱ss

小米技术社区设计小艳 关于小艳

大于花一样的年龄,河南郑州是我家,2010年在北京接触团购网,2011年进入天猫淘宝一待就是四年,如今已经将设计走向国际化(ps:误打误撞开始进入阿里巴巴国际站的设计,嘿嘿)五年电商设计,丰富经验,从事过天猫淘宝阿里各项设计,店铺运营,产品拍摄;我将我的经历与您分享是我的快乐!座右铭:越努力越幸运! ...[更多]

E-mail:97157726@qq.com

Q Q:97157726

标签云
精品推荐
  • 什么是闭包?js闭包的2个最大用途以及注意事项

    什么是闭包?js闭包的2个最大用途以及注意事项

    各种专业文献上的"闭包"(closure)定义非常抽象,很难看懂。简单的说,闭包就是能够读取其他函数内部变量的函数。由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因……
    84人已经看过了
您的位置:首页 > 前端开发 > Javascript > 原生JS

2第四阶段10 javascript类型转换和各种运算符

分类: 原生JS25个赞


//数据类型转换
//1.字符串的转换 string

let num=10;
let str = 10 + "1";
console.log(typeof str)  //结果为 string 字符串类型  数值+文本类型为文本类型
let str1 = num.toString();  //数字转换为string属性方法1,结果为string
console.log(typeof str1);
// let str2 = 10.toString  不能写10,只能写变量
let str3 = String(num); //num为转换为string类型方法2,结果 string

//2.数据类型的转换 number

let strNum1 = "6";
let strNum2 = "2";
console.log(strNum1 + strNum2) //结果为62  因为+号除了算术运算符外还有拼接功能
console.log(typeof (strNum1 + strNum2)) //结果为string
console.log (strNum1 - strNum2) //结果为4  减号只有算数运算符功能 相当于console.log(Number(strNum1) - Number(strNum2))
console.log (typeof (strNum1 - strNum2)) //结果为number 

console.log(Number(" ")) //结果为0,number会把空字符当成0转换
console.log(" 123 ") //结果为123
console.log(Number(" 123z ")) //结果为NaN,转换不了
console.log(Number(true),Number(false)) //转换结果为1,0  true对应1,false对应0
console.log(true + true + true) //转换结果为3,没有出现文本,+法就做数学运算操作  
console.log("1" + true + true + true)  // 结果为 1truetruetrue  有文本,拼接操作,
console.log(true + true + true + "好" )  //结果为3好
console.log(true + true + "好" + true  )  //结果为2好true  number(true) + number(true) + string(好) + string(true)
console.log(true - true - true)  //结果为-1
// parseInt parseFloat
let str11 = "10";
let str12 = "20";
console.log(parseInt(str11) + parseInt(str12)) // 结果30
let str13 = "10abc"
console.log(parseInt(str11) + parseInt(str13)) //结果20 ,parseInt对于字符串只会转其开头包含的数字  常用,如果要取width:30px,可以直接用parseInt提取30
let str14 = "a10bc"
console.log(parseInt(str11) + parseInt(str14)) //结果为NaN,因为a10bc开头不是数字,所以无法转换


// 3.布尔类型
console.log(Boolean(1)); //结果为ture
console.log(Boolean(0)); // 结果为 false
console.log(Boolean("hello")); //结果为ture  有值的东西都为ture
console.log(Boolean(" ")); //结果为ture 默认也是有值的 空格
console.log(Boolean("")) ; //结果为false 没有值  0 空字符串 null undefined NaN = false 

//4.算术运算符
// (2)一元运算符 二元运算符
let x= 1;
x=-x;
console.log(x); //结果为-1 ,因为-号是一元运算符
let y = 2;
console.log(y-x); //结果为3,因为是2个变量是二元运算,

// 求幂 **  a**b,相当于a 乘以 自身的 b次方
console.log(2**4) //结果 16 2*2*2*2=16
//测试
console.log(2+2+"1") //结果41 因为+号除了算术运算符外还有拼接功能
console.log(6-"2") //结果4 减号只有算数运算符功能 相当于console.log(Number(strNum1) - Number(strNum2))
console.log("6" / "2") //结果为3 除号只有算数运算符功能 相当于console.log(Number(strNum1) - Number(strNum2))
 
//(2)自增 自减 运算符
//++i i先自增在赋值, i--,i先赋值在自增 每次+1
let i = 0;
let b = i ++;
console.log(b,i) //结果b=0,i=1  先赋值在自增
let d = ++i;
console.log(d,i) //结果d=2,i=2  先自增在赋值
let f = 1;
console.log(2*++f) //结果4

//(2) 赋值运算符 = += -= *=
let a2,b2,c2;
a2=b2=c2=2+2;
console.log(a2,b2,c2) ;//结果都是4

//d2+=2 d2 = d`12+2 每次+2   d2*=2 即 d2=d2*2 
//逗号运算符 在phython叫元祖
let a=(3+4,1+2);  //结果3,逗号运算符永远是取最后一个
console.log(a)

//小练习
let a3=1,b3=1;
let c3=++a3;
let d3=b3++;
console.log(a3,b3,c3,d3) //结果 2,2,2,1

console.log(""+1+0) //结果"10"
console.log(""-1+0) //结果-1
console.log(true+false) //结果1
console.log(6 / "3") //结果2
console.log("2" +"3") //结果23
console.log(4+5+"px") //结果9px
console.log("$" +4 +5) //结果"$45"
console.log("4"-2) //结果2
console.log("4px"-2) //结果NaN
console.log(7/0) //结果Infinity 无穷大
console.log("-9" +5) //结果 "-95"
console.log("-9" - 5 ) //结果为-14
console.log(null+1) //结果为1 number(null) 转换为0
console.log(undefined +1) //结果为NAN  number(undefined) 转换为NAN
console.log("\t \n" - 2) //结果为-2  

//关系运算符 > < >= <= a==b !==不登   判断a是否等于b,最少要两个==  
//关系运算符产生的结果都是布尔类型 true false

//字符串比较
console.log("z" > "a") //true  字典序 阿斯克码表对比 Z确实在a后面 所以大于是真
console.log("Glow" > "Glee")  //多个字母对比 一个一个字母对比 g=g,l=l,0>e ,所以也是true
console.log("Bee" > "Be") //true 多一个肯定大
console.log("Bee" > "Ce")  //false 因为第一个小
//不同类型之间的比较
console.log("2">1) //true
console.log("0">1) //false
console.log("01"==1)  //true
console.log(true==1) //true
console.log(false==0) //true

let a5=0,b5="0";
console.log(Boolean(a5));//false
console.log(Boolean(b5));//true
console.log(a5==b5);  //true  //js会把等值比较的值,转换成数值在比较,null不会进行转换
console.log(""==false);// true 没有值  0 空字符串 null undefined NaN = false 
console.log(0 == false); //true  //js会把等值比较的值,转换成数值在比较 ,注意:null不会进行转换
console.log(null==undefined) //true 因为都是fasle boolean(null)
console.log(Number(null)) //结果0 number(null)=0
console.log(null>0) //false number(null)=0
console.log(null==0) //false  个例,null不会进行转换
console.log(null>=0) //true   因为>=会做数据类型转换,必须做,==于null不会
console.log(undefined >0) //undefined和谁比都是false
console.log(undefined == 0) //undefined和谁比都是false
console.log(undefined>=0) //undefined和谁比都是false
//全等 === 不全等!==
console.log(a5===b5); //false 全等不进行数据类型转换    
console.log(null===undefined)  //false 因为数据类型不同


//练习2
console.log("apple" > "pineapple") //false
console.log("2" > "12") //true ascii表对比,因为2>1 所有true
console.log(undefined == null) //true
console.log(undefined === null) //false
console.log(null=="\n0\n") //false  //js会把等值比较的值,转换成数值在比较,null不会进行转换
console.log(null===+"\n0\n") //false
console.log(null <= +"\n0\n") //true


小米技术社区

本站内容均为小米原创,转载请注明出处:小米技术社区>> 2第四阶段10 javascript类型转换和各种运算符