六大数据类型
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; }