Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:js非常灵活 , 比php还灵活 , 越是灵活的语言, 坑就越多, 一定要细心
//number类型
var grade = 89;
//string类型
var username = 'admin';
//boolean类型
var flag = false;
//undefined 表示非对象类型变量的空/无
var role;//等同于var role = undefined;
//null表示空对象
var tirle = null ;
//null 转为数值型时,它的值会自动转为0
console.log( null +100 );//等同于console.log( 0 +100 );
// undefined ->返回 NaN(Not a Number 不是数值)
console.log( undefined +100 );
//1.数组
var arr = ['赵云','关羽','张飞','马超','黄忠'];
console.log(arr);
// Array.isArray()判断是否是数组类型
console.log(Array.isArray(arr));
//遍历数组
//方法一:
for (var i = 0; i < arr.length; i++) {
//console.log(arr[i]);
}
//方法二:
// arr.forEach(function (元素,元素索引,当前数组));第一个参数是必须的,第二第三参数可选
arr.forEach(function (itme ,index,arr){
// console.log(itme);
});
//2.对象
//js中的数组类似PHP中的索引数组,js中的对象类似于php中的关联数组
var student = {
id:1,
name:"猪八戒",
email:"zhubajie@qq.comm",
"test shuxing":{
like :"喜欢吃",
wuqi:"九齿钉耙",
},
}
//获取对象中的属性
console.log(student.name);
//对象中的属性也是一个对象应这样获取
console.log(student["test shuxing"].wuqi);
//遍历对象
//方法一: for (对象的键名 in 对象) { 对象[键名]}
for (key in student) {
console.log(student[key]);
}
//方法二:借助数组的forEach()进行遍历
//第一步获取键名数组,通过Object.keys()
var keys = Object.keys(student);
keys.forEach(function (a,b,c){
console.log(this[a]);
},student);
//3.函数
function fun1(a,b){
console.log(a + "+" + b + "=" ,a+b);
}
fun1(58,64);
//匿名函数
var fun2 = function (a,b){
console.log(a + "+" + b + "=" ,a+b);
};
fun2(50,80);
//立即调用函数
(function fun1(a,b){
console.log(a + "+" + b + "=" ,a+b);
}(50,60));
//分支
//单分支
var age = 45;
// if(age > 50)console.log("年龄大了,想退休了");
//双分支
if (age > 50){
// console.log("年龄大了,想退休了");
}else{
// console.log("年龄不够,不能退休");
}
//多分支
if (age > 50 && age <60) {
// console.log("可以提前申请退休");
} else if(age >= 60 && age <65){
// console.log("已到退休年龄,申请退休");
}else{
// console.log("年龄不够,不能申请退休");
}
switch (true) {
case age > 50 && age <60:
console.log("可以提前申请退休");
break;
case age >= 60 && age <65:
console.log("已到退休年龄,申请退休");
break;
default:
console.log("年龄不够,不能申请退休");
break;
}
//循环
var itmes = document.querySelectorAll("ul:first-of-type li");
for (var i = 0; i < itmes.length; i++) {
itmes[i].style.color="red";
}
// while
var itmes = document.querySelectorAll("ul:last-of-type li");
var i = 0;
while (i < itmes.length) {
itmes[i].style.color="blue";
i++;
}
var i=10;
var b=0;
do
{
console.log("您前面还有"+ i +"人");
i--;
}
while(i>b);
//对象
var person ={
name:"猪八戒",
age:40,
isMarried:true,
course:{
name:"javaScript",
grade:89,
},
getName:function(){
return this.name;
},
hobby:undefined,
toString:function(){
return "继承属性";
},
};
//通过JSON.stringify()将js对象序列化为json字符串
// var jsonStr = JSON.stringify(person);
//json字符串如下
// {
// "name": "猪八戒",
// "age": 40,
// "isMarried": true,
// "course": {
// "name": "javaScript",
// "grade": 89
// }
// }
// JSON.stringify()第二参数如果是数组,可以限制允许序列化的属性
// var jsonStr = JSON.stringify(person,["name","age"]);
//JSON.stringify() 第二参数不是数组,是函数
var jsonStr = JSON.stringify(person,function(key,value){
switch (key) {
case "age":
return ("年龄就不告诉你");
case "isMarried":
return "管你P事";
// 必须要有default, 才可以输出其它未被处理的属性
default:
return value;
}
//参数三:可以按自己的需求来定制输出结果是怎样的格式
},"---");