一、JavaScript数据类型:
1- 原始类型:number(数值),string(字符串),boolean(布尔值)var age = 18;
var username = "admin";
var aaa = true;
console.log(typeof age, typeof username, typeof aaa);
2-特殊类型:null(空), undefined(空/无)var res;
var res = undefined;
console.log(role);
var title = null;
console.log(title);
//null,undefine都有空/无的意义
console.log(null == undefined);
//null 表示空对象
//undefined 专用于表示非对象类型变量的空/无
console.log(typeof null);
if (!null) console.log(null + "是无");
if (!undefined) console.log(undefined + "也是无");
//null转为字符串是就是它本体null
//null转为数值型为0
console.log(null + 100);
console.log(0 + 100);
//undefined---->NaN(not a Number)
console.log(undefined + 100);
//undefined弥补了null的不足
3- 对象类型:object(对象),array(数组),function(函数)
1)-对象(Object)//js中的数组类似于php中的索引数组,js中的对象类似于php中的:关联数组
var people = {
id: 1,
name: "emy",
age: "18",
"jieguo": {
chines: 90,
computer: 98,
},
};
console.log(people);
console.table(people);
//访问对象成员/属性,使用点操作符,php使用 ->
console.log(people.age);
console.log(people["jieguo"]);
console.table(people["jieguo"]);
console.table(people["jieguo"].js);
// 遍历对象
for (key in people) // for (对象的键名 in 对象){
console.log(people[key]);// 对象[键名]
}
//借助数组的forEach()进行遍历
//第一步获取键名数组
var keys = Object.keys(people);
console.log(keys);
keys.forEach(function (item, index, arr) {
console.log(this[item]);
}, people);
2)-数组(Array)var nations = ["china", "korea", "usa", "japan", "russian"];
//正确判断数组类型的方式
console.log(Array.isArray(nations));
//遍历一个数组
for (var i = 0; i
console.log(nations[i]);
}
//php 中获取数组部分元素slice(),js也有
console.log(nations.slice(0, 3));
console.log(nations.slice(2, 3));
console.log(nations.slice(0));
console.log(nations);
//php,splice(),可以实现数组的插入,替换,删除,js也有splice
nations.splice(1, 0, "german", "friance"); //插入元素
console.log(nations);
nations.splice(3, 2, "newland", "iriland"); //替换元素
console.log(nations);
nations.splice(2, 2);
console.log(nations);
var res = nations.splice(2, 2); //删除后返回的值
console.log(res);
console.log(nations);
3)-函数(function)function c1(a, b) {
console.log(a + "+" + b + "=", a + b);
}
c1(100, 10);
//匿名函数,函数表达式
var c2 = function (a, b) {
console.log(a + "+" + b + "=", a + b);
};
c2(100, 60);
// 立即调用函数
(function c1(a, b) {
console.log(a + "+" + b + "=", a + b);
})(1, 5);
二、JS对象
1-值以名称:值对的方式来书写(名称和值由冒号分隔)。
2-访问对象属性,访问对象成员使用.点操作符
方式一:objectName.propertyName
方式二:objectName["propertyName"]
3-如何遍历对象
方法一:JavaScript for...in 循环
语法:for (对象的键名 in 对象) {
要执行的代码;
}
方法二,把对象转为数组
1),获取键名数组var keys = Object.keys(需要遍历的对象);
2)把新的键名组成的数组遍历出来keys.forEach(function (value, index, arr) {
console.log(this[value]);
}, 需要遍历的对象);
三、JSON知识
1-JavaScript JSON:是存储和传输数据的格式,经常在数据从服务器发送到网页时使用。
2-JSON 语法:JSON 支持三种数据类型: 简单值, 对象, 数组。
3-JSON对象
1)没有变量声明: JSON中没有变量概念
2)没有分号: 因为JSON不是JS语句
3)属性名: 任何时候都必须添加双引号, 且必须是双引号
4)JSON属性值也支持复杂类型,如对象
4-JSON数组:JSON 数组采用了原生 JS 中的数组字面量语法// 原生JS数组
var product = [101, "电脑", 9800];
// JSON表示: 无变量和分号
[101, "电脑", 9800][
// 最常见场景是将数组与对象组合表示更加复杂的数据类型
({
id: 101,
name: "电脑",
price: 9800,
},
{
id: 102,
name: "手机",
price: 4500,
})
];
// 许多软件的配置文件都是采用这种数据格式,如VSCODE
```
5-JSON 解析与序列化:
1)ES5 提供了内置全局对象**JSON**,对 JSON 数据提供了全面支持.
JSON.stringify(): 将原生 JS 对象,序列化为 JSON 字符串,用于存储与传输.var person = {
name: "Peter Zhu",
age: 29,
isMarried: true,
course: {
name: "JavaScript",
grade: 99,
},
getName: function () {
return this.name;
},
hobby: undefined,
toString: function () {
return "继承属性";
},
};
var jsonStr = JSON.stringify(person);
console.log(jsonStr);
序列化后的结果为:{
"name": "Peter Zhu",
"age": 29,
"isMarried": true,
"course": {
"name": "JavaScript",
"grade": 99
}
}
2) JSON.parse(): 将 JSON 字符串,解析为原生 JS 对象.var jsonStr = JSON.stringify(person, function (key, value) {
switch (key) {
case "age":
return "lady's age is screts.";
case "isMarried":
return undefined;
// 必须要有default, 才可以输出其它未被处理的属性
default:
return value;
}
});
四、总结:以前对于JS效果只会是拿来主义多,这一节课终于系统地了解了JS数据类型,对象和数组的方法;JS流程控制;JSON.stringify()方法参数用法。