JavaScript数据类型
JavaScript是一个弱类型的语言,变量通过var生成没有类型,但给它赋值有类型。
- 字符串、数字、布尔、数组、对象、Null、Undefined
- Undefined代表变量没有赋值。
- 数字类型包括整数和小数
- 布尔类型:数字的话等于0为false,不等于0为true。
- 数组符号为 [ ]
- 对象符号为 { }
数字十进制、八进制、十六进制
var num = 100;
var num2 = 010;//八进制
var num3 = 0x1a;//十六进制
//浏览器控制台
console.log(typeof num)//类型
console.log(num2)
console.log(num3)
类型使用
//字符串
var str="成都";
//数字
var num=123;
//布尔
var boo=false;
//数组(数组元素可以是对象)
var arr=[1,23,"成都"];
//数组遍历
for(var i=0;i<arr.length;i++){
}
//对象
var obj={name:"maniy",city:"成都"};
//对象里面还可以写函数(一般很少用,前端框架会这样用)
var user ={userId:1,username:"张三",password:"12345",print:function () {
console.log(this.username+this.password);
}};
//null
var nu=null;
//Undefined
var Undfd;
JSON 结构
json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构。
json与对象的区别是key必须带引号。
json如果[]开头结尾是集合,{}开头结尾是对象。
var json={"name":"maniy","city":"成都"};
//json数据处理
var json = {
"name": "小号",
"age": "10",
"sex": "男"
};
var key = "name";
console.log(json[key]);
console.log(json.name);
//for-in循环
for (var key in json) {
console.log(key);//json对象中的属性的名字
console.log(json[key]);//json对象中的属性的值
}
这里外加一个JQuery遍历
//$.each()遍历的数组对象,遍历生成的是原生态的dom对象
$.each(mydata,function (i,user) {
console.log(user.username);
})
siNaN()
siNaN()判断字符是不是非数字 是为true 不是为false、
console.log(isNaN(111));
Date()
date的month一月是0,
下面代码可以完整显示时间
var date =new Date();
var year =date.getFullYear();
var month =date.getMonth()+1;
var day=date.getDate();
var hour=date.getHours();
hour=hour<10?"0"+hour:hour;
var minute=date.getMinutes();
minute=minute<10?"0"+minute:minute;
var second=date.getSeconds();
second=second<10?"0"+second:second;
var div1=document.getElementById("div1");
div1.innerHTML=year+"年"+month+"月"+day+"日"+hour+":"+minute+":"+second;
setInterval()无限循环函数
//每个一秒调用一次testA
label=setInterval(testA,1000);//一秒循环一次 1000为一千毫秒
clearInterval()停止函数
声明的label变量要在触发循环事件外
clearInterval(label);//停止循环
setTimeout设置延迟时间
//设置延迟时间
var timeout =setTimeout(function () {
//弹出输入框
var message=prompt("请输入你的新作","斗罗大陆");
},2000);
//取消延迟时间
//clearTimeout(timeout);
Math()
常用的四个math函数
random方法随机产生0到0.99999…
Math.random()
Math.floor()向下取整
Math.ceil() /向上取整
Math.round() 四舍五入
Math.floor(Math.random()*11-5);//-5到5整数
简单应用
随机产生一个十六进制的颜色值
//随机产生一个十六进制的颜色值
function getColor() {
var str = "#";
var arr = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"];
for (var i = 0; i < 6; i++) {
var num = parseInt(Math.random() * 16);
str += arr[num];
}
return str;
}
console.log(getColor());
数组遍历方式
- 普通for循环
var arr = [1,2,3,4,5,6];
for ( var i = 0; i <arr.length; i++){
console.log(arr[i]);
}
- 优化版for循环:使用变量,将长度缓存起来,避免重复获取长度,数组很大时优化效果明显
for(var j = 0,len = arr.length; j < len; j++){
console.log(arr[j]);
}
- forEach,ES5推出的,数组自带的循环,主要功能是遍历数组,实际性能比for还弱
forEach这种方法也有一个小缺陷:你不能使用break语句中断循环,也不能使用return语句返回到外层函数。
arr.forEach(function(value,i){
console.log('forEach遍历:'+i+'--'+value);
})
- map遍历,map即是 “映射”的意思 用法与 forEach 相似
arr.map(function(value,index){
console.log('map遍历:'+index+'--'+value);
});
- map遍历支持使用return语句,支持return返回值
var temp=arr.map(function(val,index){
console.log(val);
return val*val
})
console.log(temp);
forEach、map都是ECMA5新增数组的方法,所以ie9以下的浏览器还不支持
- for-of遍历 是ES6新增功能
for( let i of arr){
console.log(i);
}
for-in是为遍历对象而设计的,不适用于遍历数组。
遍历数组的缺点:数组的下标index值是数字,for-in遍历的index值"0",“1”,"2"等是字符串
for (var index in arr){
console.log(arr[index]);
console.log(index);
}