博客列表 >js学习:第14章 细说数据类型与JSON

js学习:第14章 细说数据类型与JSON

王小飞
王小飞原创
2020年05月21日 16:46:07765浏览

1. 数据类型

1.1 原始类型: number, string, boolean

1.2 特殊类型: null, undefined

声明

  1. // if (!null) console.log(null + "是无");
  2. // if (!undefined) console.log(undefined + "是无");
  3. // null === "null"
  4. // null ----> 0

代码:

  1. // 1. 数据类型
  2. // 1.1 原始类型: number, string, boolean
  3. // var grade = 89;
  4. // var username = "admin";
  5. // var flag = false;
  6. // console.log(typeof grade, typeof username, typeof flag);
  7. // 1.2 特殊类型: null, undefined
  8. // 声明
  9. // var role;
  10. // var role = undefined;
  11. // console.log(role);
  12. // var title = null;
  13. // console.log(title);
  14. // null, undefined都有空/无的意义
  15. // console.log(null == undefined);
  16. // null 表示空对象
  17. // undefined 专用于表非对象类型变量的空/无
  18. // console.log(typeof null);
  19. // if (!null) console.log(null + "是无");
  20. // if (!undefined) console.log(undefined + "是无");
  21. // null === "null"
  22. // null ----> 0
  23. // console.log(null + 100);
  24. // console.log(0 + 100);
  25. // undefined ----> NaN (Not a Number)
  26. // console.log(undefined + 100);

1.2 对象类型: array, object, function

1.2.1 js的数组与php类似

2种遍历方法代码:

  1. var fruits = ["watermelon", "apple", "orange", "peach", "pear"];
  2. console.log(fruits.length);
  3. console.log(fruits[1]);
  4. console.log(typeof fruits);
  5. // 正确判断数组类型的方式
  6. console.log(Array.isArray(fruits));
  7. // 遍历一个数组
  8. for (var i = 0; i < fruits.length; i++) {
  9. console.log(fruits[i]);
  10. }
  11. // php --> foreach, js 也有 forEach
  12. // console.log("---------forEach()-----------");
  13. // forEach是数组对象上的方法
  14. fruits.forEach(function (item, index, array) {
  15. // console.log(item);
  16. // document.body.innerHTML += "<li>" + item + "</li>";
  17. });

2种遍历方法效果:

1.2.2 php中获取数组部分元素 slice(), js也有

代码:

  1. var fruits = ["watermelon", "apple", "orange", "peach", "pear"];
  2. console.log(fruits.slice(0, 3));
  3. console.log(fruits.slice(0));
  4. console.log(fruits);

效果:

1.2.3 php , splice(), 可以实现数组的插入, 替换, 删除, js 也有 splice

代码:

  1. // fruits.splice(第一个后面开始, 删除0个,代表插入的意思
  2. fruits.splice(1, 0, "mango", "cuke");
  3. console.log(fruits);
  4. // 删除操作 0变为2 删除2个
  5. fruits.splice(1, 2, "芒果", "黄瓜");
  6. console.log(fruits);
  7. // 删除操作
  8. var res = fruits.splice(1, 2);
  9. // 获取删除的数据
  10. console.log(res);
  11. console.log(fruits);

效果:

1.3 对象, js中的数组类似于php中的索引数组, js中的对象类似于php中的: 关联数组

代码:

  1. var student = {
  2. id: 1,
  3. name: "peter",
  4. email: "peter@php.cn",
  5. "test scroe": {
  6. php: 90,
  7. js: 78,
  8. css: 64,
  9. },
  10. };
  11. console.log(student);
  12. // 按表格方式显示;
  13. console.table(student);
  14. // 访问对象成员/属性, 使用点操作符., php用 ->
  15. // 单独拿数组中的一个数据
  16. console.log(student["email"]);
  17. // 单独拿数组中的数组一个数据
  18. console.table(student["test scroe"]["php"]);
  19. // console.log("-----------for in --------------");
  20. // for (对象的键名 in 对象) {
  21. // 对象[键名]
  22. // }
  23. for (key in student) {
  24. console.log(student[key]);
  25. }

效果:

13.1 借助数组的forEach()进行遍历

第一步获取键名数组
代码:

  1. var keys = Object.keys(student);
  2. console.log(keys);
  3. keys.forEach(function (item, index, arr) {
  4. console.log(this[item]);
  5. }, student);

效果:

1.4 函数

代码:

  1. function f1(a, b) {
  2. console.log(a + " + " + b + " = ", a + b);
  3. }
  4. f1(100, 50);
  5. // 匿名函数, 函数表达式
  6. var f2 = function (a, b) {
  7. console.log(a + " + " + b + " = ", a + b);
  8. };
  9. f2(300, 60);
  10. // 立即调用函数
  11. (function f1(a, b) {
  12. console.log(a + " + " + b + " = ", a + b);
  13. })(19, 49);
  14. (function f1(a, b) {
  15. console.log(a + " + " + b + " = ", a + b);
  16. })(19, 49);

效果:

2.流程控制 也就是判断

代码:

  1. // 1 分支
  2. // 单分支
  3. var girlAge = 49;
  4. if (girlAge >= 40) console.log("我还不到50岁");
  5. // 双分支
  6. if (girlAge >= 50) console.log("我都50了 该退休了, 不想奋斗了");
  7. else console.log("我还不到50岁,我还想再努力一把");
  8. // 多分支
  9. var girlAge = 15;
  10. if (girlAge > 18 && girlAge < 30) console.log("我还年轻呢 在玩两年");
  11. else if (girlAge >= 30 && girlAge < 50)
  12. console.log("我想有个家 我都30多了");
  13. // 默认分支
  14. else console.log("我才" + girlAge + "岁, 哈哈");
  15. var switch1 = "------以下是switch循环---------";
  16. console.log(switch1);
  17. // switch
  18. switch (true) {
  19. case girlAge > 18 && girlAge < 30:
  20. console.log("哥还年轻 好好玩几年再说?");
  21. break;
  22. case girlAge >= 30 && girlAge < 50:
  23. console.log("我想有个家");
  24. break;
  25. default:
  26. console.log("我才" + girlAge + "岁, 哈哈哈");
  27. break;
  28. }

效果:

2.1 给html加样式+循环

代码:

  1. // 循环
  2. var items = document.querySelectorAll("ul:first-of-type li");
  3. for (var i = 0; i < items.length; i++) {
  4. items[i].style.color = "red";
  5. }
  6. // while
  7. var items = document.querySelectorAll("ul:last-of-type li");
  8. var i = 0;
  9. while (i < items.length) {
  10. items[i].style.color = "blue";
  11. i++;
  12. }

效果:

3.JS对象序列化为JSON格式的字符串

代码:

  1. <script>
  2. var person = {
  3. name: "Peter Zhu",
  4. age: 29,
  5. isMarried: true,
  6. course: {
  7. name: "JavaScript",
  8. grade: 99,
  9. },
  10. getName: function () {
  11. return this.name;
  12. },
  13. hobby: undefined,
  14. toString: function () {
  15. return "继承属性";
  16. },
  17. };
  18. // 将js对象 ===> 序列化为json字符串
  19. // var jsonStr = JSON.stringify(person);
  20. // 第二参数如果是数组,可以限制允许序列化的属性
  21. var jsonStr = JSON.stringify(person, ["name", "age"]);
  22. // 第二参数不是数组,是函数
  23. var jsonStr = JSON.stringify(
  24. person,
  25. function (key, value) {
  26. switch (key) {
  27. case "age":
  28. return "年龄是我的小秘密";
  29. case "isMarried":
  30. return undefined;
  31. // 必须要有default, 才可以输出其它未被处理的属性
  32. default:
  33. return value;
  34. }
  35. },
  36. "----"
  37. );
  38. console.log(jsonStr);
  39. // 1, 方法, 2,值为undefined的成员没有, 3, 原型对象成员也没有了
  40. </script>

这是转成json格式:

可以设置单独转数组中的某个值:

  1. var jsonStr = JSON.stringify(person, ["name", "age"]);
  2. console.log(jsonStr);

效果:

循环效果:

总结:本节课学习了js里面的函数 判断 等 和php类似但是大通小异,并初步了解了json。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议