javaScript数据和运算
js中的数据类型(理解)
-
简单数据类型或值类型
- string number boolean null undefined
-
复杂数据类型或组合类型
- Object Function Array RegExp Date
运算符(掌握)
算术运算符及算术表达式
一元运算符: ++ –
二元运算符: + - * / %
重点是参与二元运算的时候,运算规则就不一样了
1.如果是前++是先让自身加1(先让内存空间中的值+1),然后再拿着+1后的值进行后续运算
2.如果是后++是先拿原值参与运算(先用内存空间中原来的值),运算完毕之后再自身+1
var num = 10;
var result = ++num + num++ + num++ + ++num;
// 参与运算的值: 11 11 12 14
// 当前值: 11 12 13 14
console.log(result); // 40 41 42 43 44 48
var n1 = 12;
var n2 = ++n1 + n1++ + ++n1 + n1--;
// 参与: 13 13 15 15
// 现值: 13 14 15 14
console.log(n1,n2);
**算术表达式:**由算术运算符连接起来的式子.如:1+1 a-b(变量ab前面已声明并赋初值)
优先级:先乘除,后加减,有括号先算括号里的,相同级别的从左至右运算
一元运算符的优先级要大于二元运算符的优先级
var a=((1+5)+3)*2 小括号可以无限制的套用,但一定要成对出现.
++ 自加一 有前加和后加
-- 自减一 有前减和后减
一元运算符++/-- 比二元的+-优先级高
+= -= *= /= %= 复合赋值运算符
对于+-*/%=都需要两个操作数才能进行运算的这些运算符,我们叫做二元运算符
;对于像++ -- 这样的只需要一个操作数就能进行运算的运算符,我们叫做一元运算符.
关系运算符(比较运算)
关系运算符是用来比较两个数据值之间的一个关系,谁大,谁小?
关系运算符中又分比较运算和相等运算:
比较运算符: > >= < <=
相等运算符: == != === !==
大象的重量(1500)>老鼠的重量(1)
兔子的寿命(3)>乌龟的寿命(1000)
39<18
我的年龄(20)==你的年龄(20)
比大比小的结果是什么? // 最终产结果是布尔类型的值
逻辑运算符
&&(逻辑与) ||(逻辑或) !(逻辑非)
表达式1&&表达式2:当表达式1、2全为true时,其表达式的结果为true
表达式1||表达式2:当表达式1、2有一个为true时,其结果为true
!表达式:如果表达式的结果为true,则取反后为false,反之为true
&&
表达式1 | 表达式2 | 表达式1&&表达式2 |
---|---|---|
true | true | true |
true | false | false |
false | true | false |
false | false | false |
||
表达式1 | 表达式2 | 表达式1 |
---|---|---|
true | true | true |
true | false | true |
false | true | true |
false | false | false |
!
表达式 | !表达式 |
---|---|
true | false |
false | true |
运算符的优先级(理解)
-
() 优先级最高
-
一元算术运算符 ++ – !
-
二元算数运算符 先 * / % 后 + -
-
关系(判断)运算符 > >= < <=
-
关系(相等)运算符 == != === !==
-
逻辑运算符 先&& 后|| 赋值运算符 =
数据类型转换
其它数据类型转换number
转换的方式有两大类
-
隐式类型转换 (+ - * / %)
var num = "200"; num = +num; console.log(typeof num);// number var n1 = "30"; n1 = n1 - 0; console.log(typeof n1);// number var n2 = "40"; n2 = n2 * 1; console.log(typeof n2);// number var n3 = "50"; n3 = n3 / 1; console.log(typeof n3); // number var n4 = "60"; n4 = n4 % 10 ; console.log(typeof n4); // number // boolean null undefined都可以使用上述方式进行转化,能转成对应的值则转,不能转则为NaN 例: console.log(typeof +true); console.log(tppeof +null); console.log(typeof +undefined);
-
**显式(强制)类型转换,就是使用一些方法或是函数来进行的转化 **
- Number() Number()可以把任意值转换成数值
例: var num1 = Number(true); //true返回1 false返回0 var num2 = Number(undefined); //返回NaN var num3 = Number("hello"); //返回NaN var num4 = Number(" "); //如果是空字符串返回0 var num5 = Number(123); //返回123,如果是数字,简单返回 var num6 = Number("123abc"); //返回NaN var num7 = Number("abc123"); //返回NaN var num8 = Number(null); //返回0
特点: a.如果转换的内容可以转成数字,那么就直接返回这个内容对应的数字。 b.如果不可以转换那么返回NaN. c.如果在内容中出现小数,那么小数会保留。 d.如果内容为空,那么转换成0
- parseInt() parseInt()把字符串转换成整数
var num1 = parseInt("12.3abc"); //返回12,如果第一个字符是数字会解析直到遇到非数字结束 var num2 = parseInt("abc123"); //返回NaN,如果第一个字符不是数字或者符号就返回NaN var num3 = parseInt(""); //空字符串返回NaN,Number("")返回0 var num5 = parseInt("10"); //返回10 var num4 = parseInt("0xA"); //返回10
特点: a.如果转换的内容可以转成数字,那么就直接返回这个内容对应的数字。 b.如果不可以转换那么返回NaN. c.如果带有小数,那么会去掉小数,而不是四舍五入。 d.如果第一个字符是数字,则继续解析直至字符串解析完毕或者遇到一个非数字符号为止.
- parseFloat() parseFloat()把字符串转换成浮点数
parseFloat()和parseInt非常相似,不同之处在与 parseFloat会保留小数,如果解析的内容里只有整数,也会解析成整数. 具体示例,可以将上面案例的parseInt改成parseFloat来查看区别
其它数据值转换成string
转换的方式有两大类
-
隐式类型转换 +
- +的两边只要有一边是string类型,则在运算的时候,会进行字符串的连接
var baseSalary = 5000; var tiCheng = prompt('请输入张三这个月的工资提成'); // 假设是10000 var salary = baseSalary + tiCheng; console.log(500010000);// 输入的是字符串类型的值,因为凡是用户输入的值都是字符串类型 其它: var a = null; a = a + ""; console.log(typeof a+""); // string var b = undefined; b = b + ""; console.log(typeof b); // string var c = true; c = c + ""; console.log(typeof c); // string
-
显式(强制)类型转换
- .toString方法 几乎每一个值都有toString()方法
例如: var age = 18; var ageString = age.toString(); console.log(ageString); // 结果 "18" var result = true; var resultString = result.toString(); console.log(resultString); // 结果 "true" 数值类型的toString(),可以携带一个参数,输出对应进制的值 var num = 10; console.log(num.toString()); //"10" 默认是10进制 console.log(num.toString(10)); //"10" console.log(num.toString(8)); //"12" console.log(num.toString(16)); //"a" console.log(num.toString(2)); //"1010"
- String()
例如: var age = 18; console.log(String(age)); // 结果 “18” var result = true; console.log(String(result)); // 结果"true" console.log(String(undefined)); // 结果"undefined" String()函数存在的意义:有些值没有toString(),这个时候可以使用String()。 比如:undefined和null
其它数据值转换成布尔类型
转换的方式有两大类
-
隐式类型转换
- !!
var a = "100"; a = !!a; console.log(typeof a);
-
显式(强制)类型转换
Boolean()函数 例如: var b = Boolean("123"); //返回true 流程控制语句会把后面的值隐式转换成布尔类型 例如: var message; if (message) { //会自动把message转换成false //todo... }
转换为false的值:false、“”、0和NaN、null、undefined