Blogger Information
Blog 62
fans 2
comment 1
visits 42212
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
front 17 js数据类型-流程控制-json(0811tue)
老黑
Original
526 people have browsed it

主要内容:

  1. js数据类型,数组、对象、功能

    • 数组的slice和splice()-实现对数组元素的新增,删除,替换
    • 对象的for in遍历
    • 函数中的IIFE:立即调用函数
  2. 流程控制:基本的if、switch、for、while

  3. js对象的序列化json格式的字符串


1. 基本数据类型,数组、对象、功能

  • 数组的slice和splice()-实现对数组元素的新增,删除,替换
  • 对象的for in遍历
  • 函数中的IIFE:立即调用函数
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>数据类型与访问方式</title>
  7. </head>
  8. <body>
  9. <script>
  10. // 1. 原始类型
  11. // number 数值
  12. var grade = 88;
  13. // string 字符串
  14. var username = "peter";
  15. // bool: 布尔
  16. var flag = false;
  17. // 类型检查 typeof
  18. // console.log(typeof grade, typeof username, typeof flag);
  19. // 2. 特殊类型
  20. // null 空对象
  21. var title = null;
  22. // console.log(typeof title);
  23. // undefined 未定义
  24. var role = undefined;
  25. // console.log(typeof role);
  26. // console.log(null === undefined);
  27. // 值相等,但类型不同,所以 === 返回false
  28. // console.log(null == undefined);
  29. // console.log(null === "null");
  30. // console.log(null === 0);
  31. // console.log(null + 100);
  32. // NaN: Not a Number,非数值
  33. // console.log(undefined + 100);
  34. // console.log(undefined === NaN);
  35. // console.log(isNaN(undefined));
  36. // console.log(isNaN(100));
  37. // console.log(NaN === NaN);
  38. // 3. 对象: object, array, function
  39. // 数组
  40. var fruits = ["watermelon", "apple", "orange", "peach", "pear"];
  41. // console.log(fruits);
  42. // console.log(fruits[1]);
  43. // console.log(fruits.length);
  44. // typeof只能判断数组是不是对象类型,并不能确定它是一个数组
  45. // console.log(typeof fruits);
  46. // 判断数组的正确方式
  47. // console.log(Array.isArray(fruits));
  48. // 遍历数组
  49. // for (var i = 0; i < fruits.length; i++) {
  50. // console.log(fruits[i]);
  51. // }
  52. // forEach(function(item [, key, array]){...})
  53. // fruits.forEach(function (item, key) {
  54. // console.log("i: ", key, "item: ", item);
  55. // });
  56. // fruits.forEach((item, key) => console.log("i: ", key, "item: ", item));
  57. // 获取数组部分元素
  58. // console.log(fruits.slice(0, 3));
  59. // console.log(fruits.slice(0));
  60. // splice(): 实现对数组元素的新增,删除,替换
  61. // 从第2个索引开始删除2个元素,并返回它们
  62. // console.log(fruits.splice(1, 2));
  63. // 新增数组元素
  64. // console.log(fruits.splice(1, 0, "果汁", "黄瓜"));
  65. // 更新操作
  66. // console.log(fruits.splice(1, 2, "果汁", "黄瓜"));
  67. // console.log(fruits);
  68. // 对象: object
  69. // js中的数组 ===> 类似 php 索引数组
  70. // js中的对象 ===> 类似 php 关联数组
  71. // 对象字面量
  72. var student = {
  73. id: 1,
  74. name: "admin",
  75. email: "admin@php.cn",
  76. course: [34, 88, 93],
  77. "my scroe": {
  78. php: 90,
  79. js: 60,
  80. css: 70,
  81. },
  82. };
  83. // console.log(student);
  84. // console.table(student);
  85. // 对象成员 的访问,使用点语法
  86. // console.log(student.email);
  87. // console.log(student.course[1]);
  88. // console.log(student.course["2"]);
  89. // console.log(student["my scroe"]);
  90. // 遍历对象
  91. // for ... in
  92. // for (key in student) {
  93. // console.log(student[key]);
  94. // }
  95. // Array.from(obj):将对象转为真正的数组
  96. // console.log(Array.isArray(Array.from(student))); - 这块好像没有成功
  97. // 获取对象所有属性组成的数组
  98. // Object.keys(obj)返回对象所有属性组成的数组
  99. var keys = Object.keys(student);
  100. // console.log(keys);
  101. // 根据键名遍历, item是键名/属性名
  102. // keys.forEach(function (item) {
  103. // console.log(this[item]);
  104. // }, student);
  105. // 命名函数
  106. function f1(a, b) {
  107. console.log(a + b);
  108. }
  109. f1(1, 2);
  110. // 匿名函数
  111. var f2 = function (a, b) {
  112. console.log(a + b);
  113. };
  114. f2(100, 20);
  115. // IIFE:立即调用函数
  116. // 将函数的声明与调用合并
  117. (function (a, b) {
  118. console.log(a + b);
  119. })(150, 40);
  120. // (function (a, b) {
  121. // console.log(a + b);
  122. // }(158, 40));
  123. // +function (a, b) {
  124. // console.log(a + b);
  125. // }(345, 60);
  126. // !function (a, b) {
  127. // console.log(a + b);
  128. // }(345, 60);
  129. // ~function (a, b) {
  130. // console.log(a + b);
  131. // }(345, 60);
  132. // (function () {
  133. // if (true) {
  134. // var a = 10;
  135. // }
  136. // })();
  137. console.log(a);
  138. </script>
  139. </body>
  140. </html>

2. 流程控制:基本的if、switch、for、while

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>流程控制</title>
  7. </head>
  8. <body>
  9. <ul>
  10. <li>item1</li>
  11. <li>item2</li>
  12. <li>item3</li>
  13. </ul>
  14. <ul>
  15. <li>item1</li>
  16. <li>item2</li>
  17. <li>item3</li>
  18. </ul>
  19. <script>
  20. // 1. 分支
  21. // 单分支
  22. var age = 59;
  23. age = 49;
  24. // 如果代码块中只有一条语句,可以省略"{...}"
  25. if (age >= 50) {
  26. console.log("不想奋斗了,累了");
  27. }
  28. // 双分支
  29. if (age >= 50) {
  30. console.log("不想奋斗了,累了");
  31. } else {
  32. console.log("再努力一把");
  33. }
  34. // 多分支
  35. age = 36;
  36. if (age > 18 && age < 30) {
  37. console.log("哥没车没房, 约不约?");
  38. } else if (age >= 30 && age < 50) {
  39. console.log("哥想有个家");
  40. } else if (age >= 50) {
  41. console.log("这是真爱");
  42. }
  43. // 默认分支 else
  44. else {
  45. console.log("姐才", age, ", 认你当二叔吧");
  46. }
  47. // switch,因为下面每个case是一个范围,因此switch中是true,
  48. // 但如果是一个具体值的话,switch中可以写age
  49. switch (true) {
  50. case age > 18 && age < 30:
  51. console.log("不想奋斗了,累了");
  52. break;
  53. case age >= 30 && age < 50:
  54. console.log("哥想有个家");
  55. break;
  56. case age >= 50:
  57. console.log("这是真爱");
  58. break;
  59. default:
  60. console.log("姐才", age, ", 认你当二叔吧");
  61. }
  62. // 循环
  63. var lis = document.querySelectorAll("ul:first-of-type li");
  64. // for
  65. for (var i = 0; i < lis.length; i++) {
  66. lis[i].style.backgroundColor = "lightgreen";
  67. }
  68. // while
  69. var lis = document.querySelectorAll("ul:last-of-type li");
  70. var i = 0;
  71. while (i < lis.length) {
  72. lis[i].style.backgroundColor = "yellow";
  73. i++;
  74. }
  75. </script>
  76. </body>
  77. </html>

3. js对象的序列化json格式的字符串

3-1. JSON 是什么

  • JSON: JavaScript Object Notation(JS 对象表示法)
  • JSON: 2006 年成为国际标准,并成为表示结构化数据的通用的格式
  • JSON 借用了JS 对象字面量的语法规则,但并非 JS 对象,也并非只是 JS 才用 JSON
  • JSON 独立于任何编程语言, 几乎所有编程语言都提供了访问 JSON 数据的 API 接口
  • 尽管 JSON 与 JS 并无直接关系,但 JSON 在 JS 代码中应用最广泛

3-2. JSON 语法

JOSN 支持三种数据类型: 简单值, 对象, 数组

3-2.1 简单值
  • 数值: 150, 3.24
  • 字符串: "Hello World!",必须使用双引号做为定界符
  • 布尔值: true, false
  • 空值: null

    注意: 不支持undefined

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>js对象的序列化json格式的字符串</title>
  7. </head>
  8. <body>
  9. <script>
  10. var person = {
  11. name: "Peter Zhu",
  12. age: 29,
  13. isMarried: true,
  14. course: {
  15. name: "JavaScript",
  16. grade: 99,
  17. },
  18. getName: function () {
  19. return this.name;
  20. },
  21. hobby: undefined,
  22. toString: function () {
  23. return "继承属性";
  24. },
  25. };
  26. // 将js对象转为json格式的字符串
  27. var jsonStr = JSON.stringify(person);
  28. // 传入第二参数数组,对输出的结果进行限制
  29. jsonStr = JSON.stringify(person, ["name", "age"]);
  30. // 如果第二个参数是一个回调,可以进行动态过滤
  31. jsonStr = JSON.stringify(person, function (key, value) {
  32. switch (key) {
  33. case "age":
  34. return "年龄不能随便问的";
  35. case "isMarried":
  36. return undefined;
  37. // 必须要有default, 才可以输出其它未处理的属性
  38. default:
  39. return value;
  40. }
  41. });
  42. // json中没有方法, undefined也没有
  43. console.log(jsonStr);
  44. </script>
  45. </body>
  46. </html>

4. 作业与实战(全部操作了一遍,多数跟php差不多,但细节差异要注意,多练!)

0811-作业
将课堂上演示的常用类型,流程控制 ,json等知识全部上机操作一遍。
预习ajax, 事件, 等知识 , 明天会用到php, pdo,等知识 , 要预习的

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:学会与之前的知识,进行对比学习, 有利于快速 成长
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post