批改状态:合格
老师批语:下次不要再完全复制课堂源码当作业了, 这样不好
js 数据类型的访问方式、流程控制、js 对象序列化 json 字符串
案例实践代码整理:
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8" /><title>数据类型与访问方式</title></head><body><script type="text/javascript">// 1. 原始类型// number 数值var grade = 88;// console.log(grade);// string 字符串var username = "peter";// console.log(username);// bool: 布尔var flag = false;// console.log(flag);// 类型检查 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//1.数组var fruits = ["watermelon", "apple", "orange", "peach", "pear"];// console.log(fruits);// console.log(fruits[0]);// console.log(fruits.length);//typeof只能判断数组是不是对象类型,并不能确定它是一个数组// console.log(typeof fruits);//判断数组的正确方式// console.log(Array.isArray(fruits));//遍历数组方式1// console.log("for遍历数组:");// for(var i = 0;i < fruits.length;i++)// {// console.log(fruits[i]);// }//遍历数组方式2// forEach(function(item [, key, array]){...})// console.log("forEach遍历数组:");// 遍历值// console.log("forEach遍历值:");// fruits.forEach(function(item){// console.log(item);// });// 遍历键和值// console.log("forEach键和值:");// fruits.forEach(function(item,key){// console.log("i:",key,"item:",item);// });// 遍历键/值/数组// console.log("forEach遍历键/值/数组:");// fruits.forEach(function(item,key,array){// console.log("i:",key,"item:",item,"array:",array);// });//ES6更加简化遍历方式3// 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);// 新增数组元素// console.log(fruits.splice(1, 0, "果汁", "黄瓜"));// console.log(fruits);// 更新操作// console.log(fruits.splice(1, 2, "苹果", "橘子"));// console.log(fruits);// 2.对象: 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);//3.函数// 3.1命名函数function f1(a, b) {console.log(a + b);}f1(2, 3);// 3.2匿名函数var f2 = function (a, b) {console.log(a + b);};f2(100, 200);//3.3 IIFE:立即调用函数// 将函数的声明与调用合并//方式1:// (function (a, b) {// console.log(a + b);// })(150, 40);//方式2:// (function (a, b) {// console.log(a + b);// })(152, 30);//方式3:// +(function (a, b) {// console.log(a + b);// })(112, 38);//方式4:// !(function (a, b) {// console.log(a + b);// })(1, 38);//方式5:// ~(function (a, b) {// console.log(a + b);// })(1, 32);// (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><li>item4</li></ul><ul><li>item1</li><li>item2</li><li>item3</li><li>item4</li></ul><script>// 1.分支//单分支var age = 59;age = 50;// 如果代码块中只有一条语句,可以省略"{...}"if (age >= 50) {console.log("不想奋斗,累了");}// 双分支age = 49;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("这是真爱");}// 默认分支else {console.log("姐才", age, ",认你当二叔吧");}// switchage = 16;switch (true //age) {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.color = "red";lis[i].style.backgroundColor = "lightgreen";}// while 循环var lis = document.querySelectorAll("ul:last-of-type li");var i = 0;while (i < lis.length) {lis[i].style.backgroundColor = "yellow";i++;}</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>js对象的序列化json格式的字符串</title></head><body><script>// ## 1. JSON 是什么// - JSON: JavaScript Object Notation(JS 对象表示法)// - JSON: 2006 年成为国际标准,并成为表示结构化数据的通用的格式// - JSON 借用了**JS 对象字面量**的语法规则,但并非 JS 对象,也并非只是 JS 才用 JSON// - JSON 独立于任何编程语言, 几乎所有编程语言都提供了访问 JSON 数据的 API 接口// - 尽管 JSON 与 JS 并无直接关系,但 JSON 在 JS 代码中应用最广泛// ## 2. JSON 语法// JOSN 支持三种数据类型: 简单值, 对象, 数组// ### 2.1 简单值// - 数值: `150`, `3.24`// - 字符串: `"Hello World!"`,必须使用**双引号**做为定界符// - 布尔值: `true`, `false`// - 空值: `null`// > 注意: 不支持`undefined`var person = {name: "Peter Zhu",age: 30,isMarried: true,course: {name: "JavaScript",grade: 99,},getName: function () {return this.name;},hobby: undefined,toString: function () {return "继承属性";},};// 将js对象转为json格式的字符串var jsonStr = JSON.stringify(person);console.log(jsonStr);// 传入第二参数数组,对输出的结果进行限制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>
运行效果图:
1.数据类型//(1). 原始类型: number 数值、bool: 布尔、类型检查 typeof//(2).特殊类型:null 空对象、undefined 未定义、//(3). 对象:object,array,function2.流程控制(1) 分支:单分支(if)、双分支(if else)、多分支(if else if...else if...else)(2)多分支:switch case default(3) 循环:for循环/while 循环3.json格式的字符串(1)字符串: `"Hello World!"`,必须使用**双引号**做为定界符(2)JOSN 支持三种数据类型: 简单值, 对象, 数组(3)注意: 不支持`undefined`
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号