博客列表 >JS 变量简介

JS 变量简介

张九明
张九明原创
2020年05月21日 13:08:17563浏览

JS 变量简介

1. 原始类型

  • 数值型
  • 字符串型
  • 布尔型
  • 定义时,无须声名类型,赋值时变量自动转换成相应的类型
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>js数据类型测试</title>
  7. </head>
  8. <body></body>
  9. </html>
  10. <script>
  11. //数值类型、字符串型、布尔型举例及相互转换
  12. var a = 1;
  13. var b = 1.1;
  14. var c = a + b;
  15. var d = "1";
  16. var e = a + d;
  17. var f = b + d;
  18. var g = true;
  19. var g1 = a + g;
  20. var g2 = d + g;
  21. console.log("a的类型是:", typeof a, "; a=", a); //数值型
  22. console.log("b的类型是:", typeof b, "; b=", b); //数值型
  23. console.log("c的类型是:", typeof c, "; c=", c); //数值型
  24. console.log("d的类型是:", typeof d, "; d=", d); //字符串型
  25. console.log("e的类型是:", typeof e, "; e=", e); ////数值直接成string,与后边的string连接
  26. console.log("f的类型是:", typeof f, "; f=", f); //数值直接成string,与后边的string连接
  27. console.log("g的类型是:", typeof g, "; g=", g); //布尔值
  28. console.log("g1的类型是:", typeof g1, "; g1=", g1); //布尔值转为整数1参与计算
  29. console.log("g2的类型是:", typeof g2, "; g2=", g2); //整数1转为字符串,布尔值转为字符串,两者连接在一起
  30. if (a == g) console.log("数值型1与布尔值true相等。");
  31. else console.log("数值型1与布尔值true不相等。"); //整数1与布尔值true相等,即1可以做true使用
  32. </script>

实验效果:

2. 特殊类型

  • undefined:一般变量的(非对象类型)空;在与数值计算时,转成 NaN,不能参与计算,也不能转为对象;
  • null:表示空对象,null 是对象类型;在不同类型中自动转成 false 或“0”;
  • undefined 与 null 相等
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>js数据类型隐式转换测试</title>
  7. </head>
  8. <body></body>
  9. </html>
  10. <script>
  11. //数值类型、布尔型、undefined、null、对象、举例及相互关系
  12. var a;
  13. var b = {};
  14. var c = 0;
  15. var d = null;
  16. var e = false;
  17. var f = 10;
  18. var g = a + f;
  19. var g1 = d + f;
  20. var g2 = e + f;
  21. console.log("a的类型是:", typeof a, "; a=", a); //未赋值,是undefined类型
  22. console.log("b的类型是:", typeof b, "; b=", b); //空对象
  23. console.log("c的类型是:", typeof c, "; c=", c); //数值型
  24. console.log("d的类型是:", typeof d, "; d=", d); //null类型对象
  25. console.log("e的类型是:", typeof e, "; e=", e); //布尔类型,false
  26. console.log("f的类型是:", typeof f, "; f=", f); //数值型
  27. console.log("g的类型是:", typeof g, "; g=", g); //undefine不参与计算,输出NaN
  28. console.log("g1的类型是:", typeof g1, "; g1=", g1); //null转为整数0参与计算
  29. console.log("g2的类型是:", typeof g2, "; g2=", g2); //布尔值false转为整数0参与计算
  30. if (a == e) console.log(a, "与", e, "相等。");
  31. else console.log(a, "与", e, "不相等。"); //undefined不能转为整数0,与布尔值false不相等
  32. if (a == d) console.log(a, "与", d, "相等。");
  33. else console.log(a, "与", d, "不相等。"); //undefined与null相等
  34. if (b == d) console.log(b, "与", d, "相等。");
  35. else console.log(b, "与", d, "不相等。"); //对象无成员,但不表示是空,所以与null不相等
  36. if (c == d) console.log(d, "与", d, "相等。");
  37. else console.log(c, "与", d, "不相等。"); //整数0与null不相等
  38. if (c == e) console.log(c, "与", e, "相等。");
  39. else console.log(c, "与", e, "不相等。"); //整数0与布尔值false相等
  40. if (d == e) console.log(d, "与", e, "相等。");
  41. else console.log(d, "与", e, "不相等。"); //undefine不能转为整数0,与布尔值false不相等
  42. </script>

实验效果:

3. 对象类型

数组、对象、函数,在 JS 中都是对象。

3.1 数组

  • 语法与 PHP 语法 类似

    1. //数组定义
    2. var a = ["赵四", "男", "20", "zhaosi@email.com", "学生"];
    3. console.table(a);
  • 判断类型

  1. console.log(typeof a); //查看类型
  2. console.log(Array.isArray(a)); //判断是否是数组,true
  • 数组遍历

    • for 循环
    1. //for 遍历
    2. for (var i = 0; i < a.length; i++) console.log(a[i]);
    • forEach 语法:数组.forEach(function(数组元素变量,index,array))
    1. //forEach 遍历
    2. var strings = "";
    3. a.forEach(function (abc) {
    4. console.log(abc);
    5. strings += "<li>" + abc + "</li>";
    6. });
    7. strings = '<ul style="color:blue">' + strings + "<ul>";
    8. document.body.innerHTML = strings;
    9. </script>
    • 获取数组部分元素:数组名.slice(起始索引,结束索引),可以使用负数(负数从尾部算起),产生一个新数组;
    1. var part;
    2. part = a.slice(1, 3);
    3. console.table(part);
    4. part = a.slice(0, -1);
    5. console.table(part);
    6. part = a.slice(-2);
    7. console.table(part);
    • 替换、添加、删除数组部分元素:数组名.splice(起始索引,结束索引,元素),可以使用负数(负数从尾部算起),在现有数组上变更;
    1. //数组部分替换、删除、添加
    2. a.splice(0, 2, "李一一", "女"); //变更前个元素
    3. console.table(a);
    4. a.splice(4, 1); //从第5个元素起,删除一个元素
    5. console.table(a);
    6. a.splice(4, 0, "小队长"); //在最后添加一个元素
    7. console.table(a);

    实验效果:


3.2 对象

  • 对象定义,允许嵌套
  1. //对象定义
  2. var a = {
  3. id: 1,
  4. name: "赵四",
  5. sex: "男",
  6. age: 20,
  7. email: "zhaosi@email.com",
  8. position: "学生",
  9. "test score": {
  10. php: 90,
  11. js: 92,
  12. css: 95,
  13. html: 82,
  14. },
  15. };
  • 对象访问
  1. console.table(a); //查看全部成员
  2. console.table(a["id"]); //查看部分成员
  3. console.table(a["test score"]["php"]); //查看嵌套对象中的成员
  • 对象遍历: for (对象成员名变量 in 对象名){对象名[成员名变量] 操作}

    1. //for in 遍历
    2. console.log("=====================");
    3. for (key in a) console.table(a[key]);
    • forEach:借助数组的 forEach 遍历。先取得对象成员名,然后使用 forEach 遍历成员值。
    1. //forEach遍历
    2. console.log("--------------------");
    3. var keys = Object.keys(a); //取得成员名,存入数组中
    4. // console.table(keys);//显示对象成员名
    5. keys.forEach(function (k) {
    6. console.table(this[k]);
    7. }, a);

    实验效果:


3.3 函数

  • 函数定义
  • 函数调用
  1. //函数定义
  2. function fun(a) {
  3. console.log(a);
  4. }
  5. fun("调用一个函数");
  6. var fun1 = function (a) {
  7. console.log(a); //函数变量,匿名函数
  8. };
  9. fun1("这是一函数变量调用");
  10. //立即调用函数
  11. (function fun(a) {
  12. console.log(a);
  13. })("这是一个立即调用函数");

实验效果:

4. 总结

  • 与一般认知不同的布尔判断的情况:

    | 类型 1 | 类型 2 | 是否相等 |
    | :—————: | :——: | :———: |
    | undefined | false | 不相等 |
    | undefined | null | 相等 |
    | 无成员的对象 | null | 不相等 |
    | 0 | null | 不相等 |
    | 0 | false | 相等 |
    | null | false | 不相等 |

  • JS 对特殊类型的使用方法,还是比较混乱,不知道在什么地方用什么类型值判断?(就是殊殊类型的应用场合不清楚)

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