数据类型

可能含有值的数据类型

  • string 字符串
  • number 数字
  • boolean布尔值
  • object对象
  • function函数

    对象类型

  • object 对象

  • date 日期
  • array 数组

    不能包含值的类型

  • null

  • undefined

    typeof 运算符

    typeof 是运算符,用于确定变量的数据类型
    NaN 数据类型为数值
    数组数据类型为对象
    日期数据类型为对象
    null 数据类型是对象
    未定义变量的数据类型是 undefined
    尚未赋值的变量的数据类型是 undefined

constructor 属性

constructor 属性返回所有 JavaScript 变量构造器函数

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h2>JavaScript constructor 属性</h2>
  5. <p>constructor 属性返回变量或对象的构造器函数。</p>
  6. <p id="demo"></p>
  7. <script>
  8. document.getElementById("demo").innerHTML =
  9. "john".constructor + "<br>" +
  10. (3.14).constructor + "<br>" +
  11. false.constructor + "<br>" +
  12. [1,2,3,4].constructor + "<br>" +
  13. {name:'john', age:34}.constructor + "<br>" +
  14. new Date().constructor + "<br>" +
  15. function () {}.constructor;
  16. </script>
  17. </body>
  • constructor 可以确定某个对象是否为数组
  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h2>JavaScript 数组</h2>
  5. <p>这个“自制的” isArray() 函数在数组上使用时返回 true:</p>
  6. <p id="demo"></p>
  7. <script>
  8. var fruits = ["Banana", "Orange", "Apple", "Mango"];
  9. document.getElementById("demo").innerHTML = isArray(fruits);
  10. function isArray(myArray) {
  11. return myArray.constructor.toString().indexOf("Array") > -1;
  12. }
  13. </script>
  14. +
  • constructor 可以确定某个对象是否为日期 ```javascript <!DOCTYPE html>

JavaScript 日期对象

这个“自制的” isDate() 函数在日期上使用时返回 true:

true

  1. <a name="zQW2Q"></a>
  2. # 数据类型转换
  3. <a name="W7HxO"></a>
  4. ## 转换成字符串
  5. - string()——全局方法
  6. - tostring()——数学方法
  7. - toExponential()
  8. - 返回字符串,对数字进行摄入,并使用指针计算法来写
  9. - toFixed()
  10. - 返回字符串,对数字进行舍入,并使用指定位数的小数来写
  11. - toPrecision()
  12. - 返回字符串,并把数字写为指定的长度
  13. <a name="NJgUg"></a>
  14. ## 转换成数值
  15. - number()——全局方法
  16. - 含有字符串的转换为数字
  17. - 空字符串转换成 0
  18. - 其他字符串转换成 NaN
  19. - parseFloat()
  20. - 解析字符串并返回字符串
  21. - parseInt()
  22. - 解析字符串并返回整数
  23. ```javascript
  24. Number("3.14") // 返回 3.14
  25. Number(" ") // 返回 0
  26. Number("") // 返回 0
  27. Number("99 88") // 返回 NaN
  28. var y = "5"; // y 是字符串
  29. var x = + y; // x 是数字
  30. var y = "Bill"; // y 是字符串
  31. var x = + y; // x 是数字 (NaN)
  32. d = new Date();
  33. Number(d) // 返回 1617537356026

数据类型自动转换

  1. 5 + null // 返回 5 因为 null 被转换为 0
  2. "5" + null // 返回 "5null" 因为 null 被转换为 "null"
  3. "5" + 2 // 返回 52 因为 2 被转换为 "2"
  4. "5" - 2 // 返回 3 因为 "5" 被转换为 5
  5. "5" * "2" // 返回 10 因为 "5" 和 "2" 被转换为 5 和 2

位运算符

&

与、and
如果两位都是 1,则设置每位为 1

|

或、or
如果两位之一有 1,则设置每位为 1

^

xor,如果两位只有一位为 1,则设置为 1

运算 结果
1111 ^ 0000 1111
1111 ^ 0001 1110
1111 ^ 0010 1101
1111 ^ 0100 1011

~

not 反转所有位

<<

零填充左位移
通过从右推入 0 想左位移,并使得最左边位脱落

>>

有符号右位移
通过从左推入 0 向右位移,并使最后边的位脱落

>>>

零填充右位移
通过从左推入 0 来向右位移,并使最右边脱落

操作 结果 等同于 结果
5 & 1 1 0101 & 0001 0001
5 | 1 5 0101 | 0001 0101
5 ^ 1 4 0101 ^ 0001 0100
~ 5 10 ~0101 1010
5 << 1 10 0101 << 1 1010
5 >> 1 2 0101 >> 1 0010
5 >>> 1 2 0101 >>> 1 0010