一.数据类型转换:(js是弱类型编程语言);
1.声明变量时,不用考虑变量中将要存储的数据类型;
2. 赋值时,由系统自动动态判断数据的类型;(注:因为是动态判断同一个变量,先后可保存不同类型的数据。)
3. 运算时,js会根据自己的需要,动态转换数据类型。
二.数据类型转换分类:
1.隐式转换:无需程序员干预,而由系统自动完成的转换;
算数运算中的隐式转换:
1) 默认一切转数字类型,做算数计算.( boolean类型:true转为1,false转为0);
2)“+”法中,“+”左右只要有一个是字符串,都转为字符串,“+”变为字符串拼接;(其他类型转字符串: 在字面量前后直接加引号);
例:boolean类型转字符串:true转为”true”
2.强制转换:程序员主动调用专门函数完成的转换;
1)任意类型转为字符串(String):
(1)var str=x.toString();(null、undefined无法转为字符串)
(2)var str=String(x);(任意类型均可以转为字符串)
2)任意类型转为数字(Number):
(1)var n=Number(x);(可以将纯数字字符串及其他非字符串类型转为数字使用)
特殊:Number("")-->0
Number(null)-->0
Number([])-->0
Number(undefined)-->NaN
(2)var n=parseInt(str);(将字符串转为整数时使用,如果传入的不是字符串,则先隐式转为String)
原理:从头开始读取字符串中每个字符,跳过开头的空字符,只读取数字字符,只要碰到第一个不是数字的字符,就退出;
例:var n = parseInt( '12aaa'); //12
(3)var n=parseFloat(str);(将字符串转为小数时,用法和parseInt用法完全一样,但可以识别第一个碰到的小数点。)
例:var n = parseFloat( '12.5aaa'); //12.5
(4) Number( x) 与 parseInt(str)及parseFloat(str)的区别:
Number只认识纯数字组成的字符串,但Number却可转boolean类型; parseInt(str)和parseFloat(str)认识包含非数字字符的字符串开头位置的数字,但转不了boolean类型
3)任意类型转为布尔类型(boolean):
(1)var bool=Boolean(x);(除 "" 0 NaN undefined null 转为false外,其余都转为true)
三.表达式:由数据,变量和运算符组成的公式 ,默认情况下,从左向右,两两计算;
1.NaN(Not a Number):“不是一个数字”的“数字(类型:Number);”
何时遇到:当无法转为数字时,或无法正常计算时,结果都为NaN
特点:和任何数据做计算,结果永远为NaN
typeof(x): 返回x的数据类型名称: Number String Boolean undefined object
typeof(x): 可以测任意一个数据的数据类型(原始类型)
四.运算符:程序中模拟人的思维运算或判断的符号
1)算数运算符:+、-、*、/、%、++、--(返回值只能是number,如果无法运算,返回NaN)
2)算数运算中:默认转Number,再进行转换;(特殊:‘+’法中,碰到字符串,都转字符串,再拼接)
3)%模运算(取余数):m%n : m/n,取除不尽的余数部分
4)递增,递减运算:++ --;
(1) ++n、n++: n=n+1; 将n中的值+1,后再保存回n中;(二者变量值都会增加1,但是返回值不一样,++n返回新值,n++返回旧值);
例1: var my=10;
var lp=my++;
console.log(lp);//10
console.log(my);//11
例2:var my=10;
var lp=++my;
console.log(lp);//11
console.log(my);//11
5)关系运算:>、<、>=、<=、!=、==、===用于做比较,比大小( 返回值为true或false,默认都转为数字再比较)
(1)特殊情况:如果无法转为数字:转为NaN,NaN不等于,不大于,不小于任何值,甚至自己
(2)isNaN(num): 专门判断一个数值是否为NaN,如果是NaN,就返回true,否则返回false
(3)如果两个都是字符串,则从左到右按位比较每个字符的unicode号,直到可以比较出结果为止
6)逻辑运算:多个条件(关系运算),综合得出最后的结论,只可能返回true/false;(默认转换为bool类型)
(1)&&: 读作且,程序中称为"逻辑与"。(条件1&&条件2: 必须条件1和条件2都为true,结果为true,只要任意一个为false,结果为false)
(2)||: 读作或,程序中称为"逻辑或"。(条件1||条件2:只要任意一个条件为true,结果为true,只有所有条件都为false,结果才为false)
(3)!: 读作不,程序中称为"非"。(颠倒条件的true/false结果)
(4)短路逻辑:逻辑运算中,如果前一个条件已经可以得出最终结论,则后续所有条件不再执行!
7)赋值运算:=,将等号的右边的值保存在左边的变量中。赋值表达式也有返回值,会返回将要保存回变量的新值。
8)扩展赋值运算+=、-=、*=、/=、%=;对变量内部的值进行修改的简写方法
例: a=a+5等同于a+=5,表示累加。
9)三目运算(条件运算 三元):根据不同条件,判断执行不同操作,或返回不同的值
(1)语法:条件1?操作1:条件2;(如果条件1为true则执行操作1,否则执行操作2);
1.声明变量时,不用考虑变量中将要存储的数据类型;
2. 赋值时,由系统自动动态判断数据的类型;(注:因为是动态判断同一个变量,先后可保存不同类型的数据。)
3. 运算时,js会根据自己的需要,动态转换数据类型。
二.数据类型转换分类:
1.隐式转换:无需程序员干预,而由系统自动完成的转换;
算数运算中的隐式转换:
1) 默认一切转数字类型,做算数计算.( boolean类型:true转为1,false转为0);
2)“+”法中,“+”左右只要有一个是字符串,都转为字符串,“+”变为字符串拼接;(其他类型转字符串: 在字面量前后直接加引号);
例:boolean类型转字符串:true转为”true”
2.强制转换:程序员主动调用专门函数完成的转换;
1)任意类型转为字符串(String):
(1)var str=x.toString();(null、undefined无法转为字符串)
(2)var str=String(x);(任意类型均可以转为字符串)
2)任意类型转为数字(Number):
(1)var n=Number(x);(可以将纯数字字符串及其他非字符串类型转为数字使用)
特殊:Number("")-->0
Number(null)-->0
Number([])-->0
Number(undefined)-->NaN
(2)var n=parseInt(str);(将字符串转为整数时使用,如果传入的不是字符串,则先隐式转为String)
原理:从头开始读取字符串中每个字符,跳过开头的空字符,只读取数字字符,只要碰到第一个不是数字的字符,就退出;
例:var n = parseInt( '12aaa'); //12
(3)var n=parseFloat(str);(将字符串转为小数时,用法和parseInt用法完全一样,但可以识别第一个碰到的小数点。)
例:var n = parseFloat( '12.5aaa'); //12.5
(4) Number( x) 与 parseInt(str)及parseFloat(str)的区别:
Number只认识纯数字组成的字符串,但Number却可转boolean类型; parseInt(str)和parseFloat(str)认识包含非数字字符的字符串开头位置的数字,但转不了boolean类型
3)任意类型转为布尔类型(boolean):
(1)var bool=Boolean(x);(除 "" 0 NaN undefined null 转为false外,其余都转为true)
三.表达式:由数据,变量和运算符组成的公式 ,默认情况下,从左向右,两两计算;
1.NaN(Not a Number):“不是一个数字”的“数字(类型:Number);”
何时遇到:当无法转为数字时,或无法正常计算时,结果都为NaN
特点:和任何数据做计算,结果永远为NaN
typeof(x): 返回x的数据类型名称: Number String Boolean undefined object
typeof(x): 可以测任意一个数据的数据类型(原始类型)
四.运算符:程序中模拟人的思维运算或判断的符号
1)算数运算符:+、-、*、/、%、++、--(返回值只能是number,如果无法运算,返回NaN)
2)算数运算中:默认转Number,再进行转换;(特殊:‘+’法中,碰到字符串,都转字符串,再拼接)
3)%模运算(取余数):m%n : m/n,取除不尽的余数部分
4)递增,递减运算:++ --;
(1) ++n、n++: n=n+1; 将n中的值+1,后再保存回n中;(二者变量值都会增加1,但是返回值不一样,++n返回新值,n++返回旧值);
例1: var my=10;
var lp=my++;
console.log(lp);//10
console.log(my);//11
例2:var my=10;
var lp=++my;
console.log(lp);//11
console.log(my);//11
5)关系运算:>、<、>=、<=、!=、==、===用于做比较,比大小( 返回值为true或false,默认都转为数字再比较)
(1)特殊情况:如果无法转为数字:转为NaN,NaN不等于,不大于,不小于任何值,甚至自己
(2)isNaN(num): 专门判断一个数值是否为NaN,如果是NaN,就返回true,否则返回false
(3)如果两个都是字符串,则从左到右按位比较每个字符的unicode号,直到可以比较出结果为止
6)逻辑运算:多个条件(关系运算),综合得出最后的结论,只可能返回true/false;(默认转换为bool类型)
(1)&&: 读作且,程序中称为"逻辑与"。(条件1&&条件2: 必须条件1和条件2都为true,结果为true,只要任意一个为false,结果为false)
(2)||: 读作或,程序中称为"逻辑或"。(条件1||条件2:只要任意一个条件为true,结果为true,只有所有条件都为false,结果才为false)
(3)!: 读作不,程序中称为"非"。(颠倒条件的true/false结果)
(4)短路逻辑:逻辑运算中,如果前一个条件已经可以得出最终结论,则后续所有条件不再执行!
7)赋值运算:=,将等号的右边的值保存在左边的变量中。赋值表达式也有返回值,会返回将要保存回变量的新值。
8)扩展赋值运算+=、-=、*=、/=、%=;对变量内部的值进行修改的简写方法
例: a=a+5等同于a+=5,表示累加。
9)三目运算(条件运算 三元):根据不同条件,判断执行不同操作,或返回不同的值
(1)语法:条件1?操作1:条件2;(如果条件1为true则执行操作1,否则执行操作2);