Blogger Information
Blog 14
fans 0
comment 2
visits 12654
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
js基础知识学习
JKY辉哥
Original
602 people have browsed it

js 数据类型的访问方式、流程控制、js 对象序列化 json 字符串

1.js 数据类型的访问方式

案例实践代码整理:

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

运行效果图:

2.js 流程控制

实践案例代码:

  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. <li>item4</li>
  14. </ul>
  15. <ul>
  16. <li>item1</li>
  17. <li>item2</li>
  18. <li>item3</li>
  19. <li>item4</li>
  20. </ul>
  21. <script>
  22. // 1.分支
  23. //单分支
  24. var age = 59;
  25. age = 50;
  26. // 如果代码块中只有一条语句,可以省略"{...}"
  27. if (age >= 50) {
  28. console.log("不想奋斗,累了");
  29. }
  30. // 双分支
  31. age = 49;
  32. if (age >= 50) {
  33. console.log("不想奋斗,累了");
  34. } else {
  35. console.log("再努力一把");
  36. }
  37. //多分支
  38. age = 36;
  39. if (age > 18 && age < 30) {
  40. console.log("哥没车没房,约不约?");
  41. } else if (age >= 30 && age < 50) {
  42. console.log("哥想有个家");
  43. } else if (age >= 50) {
  44. console.log("这是真爱");
  45. }
  46. // 默认分支
  47. else {
  48. console.log("姐才", age, ",认你当二叔吧");
  49. }
  50. // switch
  51. age = 16;
  52. switch (
  53. true //age
  54. ) {
  55. case age > 18 && age < 30:
  56. console.log("不想奋斗,累了");
  57. break;
  58. case age > 30 && age < 50:
  59. console.log("哥想有个家");
  60. break;
  61. case age >= 50:
  62. console.log("这是真爱");
  63. break;
  64. default:
  65. console.log("姐才", age, ",认你当二叔吧");
  66. }
  67. //循环
  68. var lis = document.querySelectorAll("ul:first-of-type li");
  69. // for
  70. for (var i = 0; i < lis.length; i++) {
  71. lis[i].style.color = "red";
  72. lis[i].style.backgroundColor = "lightgreen";
  73. }
  74. // while 循环
  75. var lis = document.querySelectorAll("ul:last-of-type li");
  76. var i = 0;
  77. while (i < lis.length) {
  78. lis[i].style.backgroundColor = "yellow";
  79. i++;
  80. }
  81. </script>
  82. </body>
  83. </html>

运行效果图:

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

实践案例代码:

  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. // ## 1. JSON 是什么
  11. // - JSON: JavaScript Object Notation(JS 对象表示法)
  12. // - JSON: 2006 年成为国际标准,并成为表示结构化数据的通用的格式
  13. // - JSON 借用了**JS 对象字面量**的语法规则,但并非 JS 对象,也并非只是 JS 才用 JSON
  14. // - JSON 独立于任何编程语言, 几乎所有编程语言都提供了访问 JSON 数据的 API 接口
  15. // - 尽管 JSON 与 JS 并无直接关系,但 JSON 在 JS 代码中应用最广泛
  16. // ## 2. JSON 语法
  17. // JOSN 支持三种数据类型: 简单值, 对象, 数组
  18. // ### 2.1 简单值
  19. // - 数值: `150`, `3.24`
  20. // - 字符串: `"Hello World!"`,必须使用**双引号**做为定界符
  21. // - 布尔值: `true`, `false`
  22. // - 空值: `null`
  23. // > 注意: 不支持`undefined`
  24. var person = {
  25. name: "Peter Zhu",
  26. age: 30,
  27. isMarried: true,
  28. course: {
  29. name: "JavaScript",
  30. grade: 99,
  31. },
  32. getName: function () {
  33. return this.name;
  34. },
  35. hobby: undefined,
  36. toString: function () {
  37. return "继承属性";
  38. },
  39. };
  40. // 将js对象转为json格式的字符串
  41. var jsonStr = JSON.stringify(person);
  42. console.log(jsonStr);
  43. // 传入第二参数数组,对输出的结果进行限制
  44. jsonStr = JSON.stringify(person, ["name", "age"]);
  45. // 如果第二个参数是一个回调,可以进行动态过滤
  46. jsonStr = JSON.stringify(person, function (key, value) {
  47. switch (key) {
  48. case "age":
  49. return "年龄不能随便问的";
  50. case "isMarried":
  51. return undefined;
  52. // 必须要有default, 才可以输出其它未处理的属性
  53. default:
  54. return value;
  55. }
  56. });
  57. // json中没有方法, undefined也没有
  58. console.log(jsonStr);
  59. </script>
  60. </body>
  61. </html>

运行效果图:

4.总结

  1. 1.数据类型
  2. //(1). 原始类型: number 数值、bool: 布尔、类型检查 typeof
  3. //(2).特殊类型:null 空对象、undefined 未定义、
  4. //(3). 对象:object,array,function
  5. 2.流程控制
  6. (1) 分支:单分支(if)、双分支(if else)、多分支(if else if...else if...else)
  7. 2)多分支:switch case default
  8. (3) 循环:for循环/while 循环
  9. 3.json格式的字符串
  10. (1)字符串: `"Hello World!"`,必须使用**双引号**做为定界符
  11. (2)JOSN 支持三种数据类型: 简单值, 对象, 数组
  12. (3)注意: 不支持`undefined`
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
1 comments
JKY辉哥 2020-08-18 15:47:26
好的,朱老师
1 floor
Author's latest blog post