六大数据类型
Number ==> 数字
String ==> 字符串
Boolean ==> 布尔值
function ==> 函数
undefined ==> 未定义.值就是undefined
Object ==> 对象
其中前五个叫原始数据类型,最后一个对象叫对象类型,所以js面向对象式的编程模式,除了null和undefined
Number数字
js不分整型和浮点数(小数)
范围:-2^53 ~ 2^53,超过低位精度就会不准确,某些浮点数就会产生不准确
0.8 - 0.1 = 0.7000000000000001
0.3 - 0.1 = 0.19999999999999998
Number方法
| Comment | Description | 
|---|---|
| Number() | 构造函数,参数中必须能被转换成数字,否则返回NaN | 
| parseInt() | 讲字符串转换为数字,遇到不是数字就停 | 
| parseFloat() | 遇到不是数就停,保留小数 | 
| Num.toFixed(2) | 四舍五入保留两位小数,返回字符串 | 
NaN
Not a Number 他们自己都不等于自己,NaN的数据类型就是Number 一个空对象也不等于空对象
var n = 1 + undefinedalert(isNaN(n));// true// 判断n的值是否等于nalert(n==n);// false 他们自己都不等于自己 NaN的数据类型就是Number
Math数学函数
| Method | Description | 
|---|---|
| Math.pow( 16, 2 ) | 十六的平方 256 | 
| Math.round( 0.52 ) | 四舍五入 | 
| Math.ceil( 0.1 ) | 向上取整1,ceil天花板·上 | 
| Math.floor( 0.9 ) | 向下取整0,floor地板·下 | 
| Math.max( 9, 8, 7 ) | 取最大数9 | 
| Math.min( 0, 1, 5 ) | 取最小数0 | 
| Math.random() | 生成一个0-1伪随机数,没参数 | 
| Math.random() * 30 + 20 | 生成20-50的随机数 | 
Number没有length属性取长度方法
String字符串
字符串有引号(单双皆可,但需对应)括起来,来个字符串可以用 + 来拼接起来
| Method | Description | 
|---|---|
| str[0] | 取字符串索引,从0开始,IE8+ | 
| str.charAt(0) | 去字符串索引,从0开始,支持所有 | 
| toString() | 转换为字符串 | 
| str.substring(5, 1) | 从2开始取到第5位,小于会交换位置,负数为0 | 
| str.slice(5, 1) | 取不到会为空,不会交换位置,负数倒着数 | 
| str.indexOf('slice', 5) | 查找文本,从第5位开始查找,成功返回索引否则返回-1 | 
| str.split(' ') | 用空格分割,返回数组 | 
| str.tuUpperCase()['?p?] | 全部转换大写,无参 | 
| str.toLowerCase()['l???] | 全部转换为小写,无参 | 
str = 'abcdslice'alert(str.substring(2, 6)) // 从第二位开始 取到第六位alert(str.substring(6, -2))// 负数为0,小的参数会放在前面,0-6alert( str.indexOf("slice", str.indexOf('slice')+1) ); // 查找两次var str1 = "username----password|abcd----1234";var arr = str1.split('|');
arr[0] // 第一组账号数据 username----passwordarr[1] // 第一组账号数据 abcd----1234 账号密码再分离就再通过“----”切Boolean布尔值
当要判断一个值是否等于另一个只就会使用到布尔,因为只有两个值true/false 真真/假假 是和不是 好和不好 相等和不相等
undefined
null
0和-0
NaN
""
以上五个在做条件判断的时候都为假,其余都为真,包括空对象、空数组
Boolean转Number ==>true为1、fasel为0
var a = 4;if (a==4) {
 alert( "a=4" )
}// if () 括号里为判断条件,条件为真就会执行后面花括号里的代码if( "false" ) {
 alert(true);
}if ( !false ) { // 感叹号! 非的意思,如果为真则取反为假反之为真、
 alert(true);
}if () {
} else if () {
} else if () {
} else {
}var a = 4;if (a == 2) {
 alert(2);
} else if(a == 4) {
 alert(4);
} else {
 alert('既不等于四,也不等于二');
}// 空数组和 空对象都转化为true 有值也一样alert(Boolean({}))
alert(Boolean([]))null和undefined
null == undefined 返回true 在做条件判断的时候都为假 假和假相等
null是一个keyword关键字,类似于正确空值的填补,undefined是预先定义好的全局变量不是关键字,变量声明没有赋值也是undefined,值就是undefined没有定义,类似于一个错误空值的填补
null转Number为0,undefined转Number为NaN;
1 + undefined = NaN; // 会强制转换为数字进行计算 1 + NaN = NaN;
1 + null = 1; // 1 + 0 = 1;
Array数组
var arr = [0, 1, 2]; alert(typeof arr); // Object,无法确认
判断是否为数组:typeof返回的结果是Object对象,无法判断准确
| Method | Description | 
|---|---|
| Array.isArray(arr); | 返回true是数组 | 
| arr.join("== 字符串 ==") | 0== 字符串1字符串 ==2 | 
js运算符
| Description | Sign[sa?n] | 
|---|---|
| 运算符 | + - * / %磨余 | 
| 赋值操作符 | = += -= /= %= | 
能被计算才会执行计算,不能计算则会出现各种问题(报错 or NaN ...)
主要值与值之间相加,其中有一个字符串则就是字符串的拼接
布尔值和数字计算:true = 1,false = 0
-* / % 会强制转换为数字进行计算
练习
var a = 3; a += "2"; // a = a + "2"; 32a -= "2"; // a = a - "2"; 30 强制转换Numbera++; // 30+1 自己增加1,没有自己增加2...的符号写法alert(a); // 31a--; alert(a); // 30var b = a++; // alert(a); // 31alert(b); // 30 因为是先把a变量的值赋给b,然后原来的a变量再自增1var c = ++a; alert(a); // 32alert(c); // 32 先自己增加一次,然后再赋值给c
判断条件符号
> < == <= >= !=不等于 ===恒等于(还会判断数据类型) !== 不全等
逻辑运算符
// 逻辑运算符 && || ! 与 或 非 和 或 取反 & | 单位符号是位操作,这里不阐述
&&与 条件练习
var a = 5 < 2 && 4 < 5// 遇到假就停,短路设置,一开始为假直接返回false、
||或 条件练习
var a = 1 > 2 || 2 > 3 || 8;// 遇到真就停,短路设置,一不大于二false,二不大于三false,8没有判断符号转换布尔来进行判断true/false// 除了0以外的数都为真;
非练习
var a = !false; // true
警告窗
var a = function() {
 alert(666);
}
alert(a); // 弹出函数一整块var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
alert(arr);// 弹出1,2,3,4,5,6,7,8,9var obj = {name: "slice"};
alert(obj); // 弹出[object Obejct]控制台打印日志
console.log("This is Console Print");
for循环
for(var i=0; i<100; i++) { // 标准写法,i变量声明可以拿出去 第三个执行的操作也可以拿到里面去写
 console.log(i); // 0-100上面 声明变量必须要赋初始值0 否则undefined进行计算会变成NaN
 } 
 for(var key in document) { console.log(key +"======"+document[key]); // 查看document里面所有的方法
 }流程控制语句
if ( 10>1 ) {
 	alert(1);
 }else if( 5<50 ){
 	alert(2);
 }else if( 10>20 ){
 	alert(3);
 } // 只有一条真语句
 if( 8 > 0 ) alert('This is 8 > 0'); 
 // 三目运算符(只有一条真语句和只有一条假语句的时候)
 var a = 10>1 ? 2 : 5;// 变量写在里面会报错循环语句控制
// continue到循环尾for(var i = 0; i<10; i++) { if(i==5) continue; console.log(i);
}// Break跳出循环for(var i = 0; i<10; i++) { if(i==5) break; console.log(i);
}switch循环
switch ( username ) { case "yoona":
 alert( username+'老师,很帅' ) break
 case "威":
 alert( username+ '老师:女神!' ) break
 case "蛋":
 alert( username + "老师,很萌" ) break
 case "薰":
 alert( username + "老师,很厉害" ) break
 default:
 alert( "没有这位老师" ); break;
}