数据类型转换和运算符

(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、显式转换
  1. 转数字: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
  1. 转字符串: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
  1. 转布尔: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、算术运算符
  1. +(加)
  2. -(减)
  3. *(乘)
  4. /(除)
  5. %(取余)
    * 相加的时候,有一个数为字符串,则+表示字符串拼接,两值相加为字符串;
    * 用户从网页上输入的都是字符串
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、逻辑运算符
  1. 逻辑非:!
    值为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);
    }
  1. 逻辑与:&&
    • 参与运算的都为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,后面不再检查
  1. 逻辑或:||
    • 参与运算的都为boolean类型时,其中有一个值为true,整个表达式为true;
    • boolean或其他类型参与运算时,前者值为true取前者值,否则取后者值。
true || true;  // true
  true || false; // true
  false || true; // true
  false || false; // falsevar num1 = 100;
  var num2 = 0;
  num1 || num2;  // 100
  num2 || num1;  // 100var 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值