博客列表 >js基础知识学习

js基础知识学习

JKY辉哥
JKY辉哥原创
2020年08月18日 15:33:15593浏览

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`
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议
JKY辉哥2020-08-18 15:47:261楼
好的,朱老师