批改状态:合格
老师批语:学会与之前的知识,进行对比学习, 有利于快速 成长
js数据类型,数组、对象、功能
流程控制:基本的if、switch、for、while
js对象的序列化json格式的字符串
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>数据类型与访问方式</title></head><body><script>// 1. 原始类型// number 数值var grade = 88;// string 字符串var username = "peter";// bool: 布尔var flag = false;// 类型检查 typeof// console.log(typeof grade, typeof username, typeof flag);// 2. 特殊类型// null 空对象var title = null;// console.log(typeof title);// undefined 未定义var role = undefined;// console.log(typeof role);// console.log(null === undefined);// 值相等,但类型不同,所以 === 返回false// console.log(null == undefined);// console.log(null === "null");// console.log(null === 0);// console.log(null + 100);// NaN: Not a Number,非数值// console.log(undefined + 100);// console.log(undefined === NaN);// console.log(isNaN(undefined));// console.log(isNaN(100));// console.log(NaN === NaN);// 3. 对象: object, array, function// 数组var fruits = ["watermelon", "apple", "orange", "peach", "pear"];// console.log(fruits);// console.log(fruits[1]);// console.log(fruits.length);// typeof只能判断数组是不是对象类型,并不能确定它是一个数组// console.log(typeof fruits);// 判断数组的正确方式// console.log(Array.isArray(fruits));// 遍历数组// for (var i = 0; i < fruits.length; i++) {// console.log(fruits[i]);// }// forEach(function(item [, key, array]){...})// fruits.forEach(function (item, key) {// console.log("i: ", key, "item: ", item);// });// fruits.forEach((item, key) => console.log("i: ", key, "item: ", item));// 获取数组部分元素// console.log(fruits.slice(0, 3));// console.log(fruits.slice(0));// splice(): 实现对数组元素的新增,删除,替换// 从第2个索引开始删除2个元素,并返回它们// console.log(fruits.splice(1, 2));// 新增数组元素// console.log(fruits.splice(1, 0, "果汁", "黄瓜"));// 更新操作// console.log(fruits.splice(1, 2, "果汁", "黄瓜"));// console.log(fruits);// 对象: object// js中的数组 ===> 类似 php 索引数组// js中的对象 ===> 类似 php 关联数组// 对象字面量var student = {id: 1,name: "admin",email: "admin@php.cn",course: [34, 88, 93],"my scroe": {php: 90,js: 60,css: 70,},};// console.log(student);// console.table(student);// 对象成员 的访问,使用点语法// console.log(student.email);// console.log(student.course[1]);// console.log(student.course["2"]);// console.log(student["my scroe"]);// 遍历对象// for ... in// for (key in student) {// console.log(student[key]);// }// Array.from(obj):将对象转为真正的数组// console.log(Array.isArray(Array.from(student))); - 这块好像没有成功// 获取对象所有属性组成的数组// Object.keys(obj)返回对象所有属性组成的数组var keys = Object.keys(student);// console.log(keys);// 根据键名遍历, item是键名/属性名// keys.forEach(function (item) {// console.log(this[item]);// }, student);// 命名函数function f1(a, b) {console.log(a + b);}f1(1, 2);// 匿名函数var f2 = function (a, b) {console.log(a + b);};f2(100, 20);// IIFE:立即调用函数// 将函数的声明与调用合并(function (a, b) {console.log(a + b);})(150, 40);// (function (a, b) {// console.log(a + b);// }(158, 40));// +function (a, b) {// console.log(a + b);// }(345, 60);// !function (a, b) {// console.log(a + b);// }(345, 60);// ~function (a, b) {// console.log(a + b);// }(345, 60);// (function () {// if (true) {// var a = 10;// }// })();console.log(a);</script></body></html>
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>流程控制</title></head><body><ul><li>item1</li><li>item2</li><li>item3</li></ul><ul><li>item1</li><li>item2</li><li>item3</li></ul><script>// 1. 分支// 单分支var age = 59;age = 49;// 如果代码块中只有一条语句,可以省略"{...}"if (age >= 50) {console.log("不想奋斗了,累了");}// 双分支if (age >= 50) {console.log("不想奋斗了,累了");} else {console.log("再努力一把");}// 多分支age = 36;if (age > 18 && age < 30) {console.log("哥没车没房, 约不约?");} else if (age >= 30 && age < 50) {console.log("哥想有个家");} else if (age >= 50) {console.log("这是真爱");}// 默认分支 elseelse {console.log("姐才", age, ", 认你当二叔吧");}// switch,因为下面每个case是一个范围,因此switch中是true,// 但如果是一个具体值的话,switch中可以写ageswitch (true) {case age > 18 && age < 30:console.log("不想奋斗了,累了");break;case age >= 30 && age < 50:console.log("哥想有个家");break;case age >= 50:console.log("这是真爱");break;default:console.log("姐才", age, ", 认你当二叔吧");}// 循环var lis = document.querySelectorAll("ul:first-of-type li");// forfor (var i = 0; i < lis.length; i++) {lis[i].style.backgroundColor = "lightgreen";}// whilevar lis = document.querySelectorAll("ul:last-of-type li");var i = 0;while (i < lis.length) {lis[i].style.backgroundColor = "yellow";i++;}</script></body></html>
JOSN 支持三种数据类型: 简单值, 对象, 数组
150, 3.24"Hello World!",必须使用双引号做为定界符true, falsenull注意: 不支持
undefined
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>js对象的序列化json格式的字符串</title></head><body><script>var person = {name: "Peter Zhu",age: 29,isMarried: true,course: {name: "JavaScript",grade: 99,},getName: function () {return this.name;},hobby: undefined,toString: function () {return "继承属性";},};// 将js对象转为json格式的字符串var jsonStr = JSON.stringify(person);// 传入第二参数数组,对输出的结果进行限制jsonStr = JSON.stringify(person, ["name", "age"]);// 如果第二个参数是一个回调,可以进行动态过滤jsonStr = JSON.stringify(person, function (key, value) {switch (key) {case "age":return "年龄不能随便问的";case "isMarried":return undefined;// 必须要有default, 才可以输出其它未处理的属性default:return value;}});// json中没有方法, undefined也没有console.log(jsonStr);</script></body></html>
0811-作业
将课堂上演示的常用类型,流程控制 ,json等知识全部上机操作一遍。
预习ajax, 事件, 等知识 , 明天会用到php, pdo,等知识 , 要预习的
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号