Blogger Information
Blog 7
fans 0
comment 0
visits 4896
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
JS 变量简介
张九明
Original
560 people have browsed it

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 对特殊类型的使用方法,还是比较混乱,不知道在什么地方用什么类型值判断?(就是殊殊类型的应用场合不清楚)

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:js中许多知识点模棱两可, 怎么用都可以, 也许这正是js的魅力所在吧, 够灵活, 给了程序员极大的想像和发挥空间
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