• 你不知道的javaScript笔记(4)


    类型:

    JavaScript 7种内置类型

    空值 (null)

    未定义(undefined)

    布尔值(boolean)

    数字(number)

    字符串(string)

    对象(object)

    符号(symbol)

       除对象以外,其他统称为基本类型

    typeof 运算符来查看值的类型

    typeof undefined  === "undefined";   // true
    
    typeof true === "boolean";  // true
    
    typeof 42 === "number";  // true
    
    typeof "42" === "string";  // true
    
    typeof {life:42} === "object";  // true
    
    typeof Symbol() === "symbol"; // true
    
    typeof null  === "object"  // true

    我们需要使用复合条件来检测null 值的类型

    var a = null;

    (!a && typeof a === "object"); true

    null 是假值 是唯一一个用typeof 检测会返回 “object” 的基本类型

    函数是对象的一个子类型,函数是可调用的对象,他有一个内部属性[Call]该属性使其可以被调用。

    函数对象的的length 属性是其声明的参数的个数:

        function a(a,c){
    
        }
    
        a.length;  // 2

    数组也是对象的一个子类型,其length 是元素的一个数。

    typeof [1,2,3] ==== "object"; // true

    值和类型

    Javascrpit 中的变量是没有类型的,只有值才有,变量可以随时持有任何类型的值。

    typeof 运算符总是会返回一个字符串:

    typeof typeof 42; // "string"

       typeof 42 首先返回字符串“number”,然后typeof "number" 返回"string"

    undefined undeclared

    变量在已声明但未赋值的时候是undefined.

    没有在作用域中声明的过的变量是undeclared 的。

    但是往往都是这两种情况都会是undefined  ,浏览器处理问题。

    全局变量可以通过window. 来访问。

    数组:

    在创建稀疏数组,既含有空白或空缺的数组

          var  a = [ ];
          a[0] = 1;
          // 此处没有设置a[1] 单元
          a[2] = [3];
          a[1];   //undefined
          a.length; // 3

           可以通过数字进行索引,也可以包含字符串键值和属性。(建议数字索引)

        var a  = [ ];
        a[0] = 1;  
        a["foobar"] = 2;
        a.length;  1
        a["foobar"]; // 2
        a.foobar; // 2

    类数组

    工具函数slice(...) 经常被用于类型转换

          function foo(){
            var  arr = Array.prototype.slice.call(arguments);
            arr.push("bam");
            console.log(arr);
          }
          foo("bar","baz"); // ["bar","baz","bam"]

      ES6 中的内置工具Array.from(...) 也能实现同样的功能。

    var arr = Array.from(argments);

    字符串

    借用数组的非变更方法来处理字符串

          var a = "foo";
          a.join; // undefined
          a.map; // undefined
    
          var c = Array.prototype.join.call(a,"-");
          var d = Array.prototype.map.call(a,function(v){
            return v.toUpperCase() + ".";
          }).join("");
    
          c; // "f-o-o"
          d; // "F.o.o"

    先将字符串转换为数组,待处理完毕在将结果换回字符串。

    var a = "foo";

    var c = a

    // a的值转换为字符数组

    .split("")

    // 将数组中的字符进行倒转

    .reverse()

    // 将数组中的字符拼接回字符串

    .join("");

    c; // "oof"

     数字

    JavaScript 只有一种数值类型: number(数字)

    数字的语法

    数字常量一般用十进制表示

        var a = 42;
        var b = 42.3;

    数字前面的0可以忽略:

        var a = 0.42;
        var b = .42;

    小数点后小数部分最后面的0 可以忽略。

        var a = 42.0;
        var b = 42.;(不建议这样写)

     特别大或者特别小的数字默认用指数格式显示,toExponential()函数输出的结果相同。

        var a = 5E10;
        a;
        a.toExponential(); // "5e+10"
    
        var  b = a * a;
        b;   // 2.5e+21
        var  c =  1 / a;
        c;    // 2e-11

     

     指定小数显示的位数

        var a = 42.59;
        a.toFixed(0); // "43"
        a.toFixed(1);  // "43.6"
        a.toFixed(2); // "43.59"
        a.toFixed(3); // "43.590"

    toPrecision(..) 方法用来指定有效数位的显示数

          var  a = 42.59;
          a.toPrecision(1); // "4e+1"
          a.toPrecision(2); // "43"
          a.toPrecision(3); // "42.6"
          a.toPrecision(4); // "42.59"
          a.toPrecision(5); // "42.590"

    (适用于数字变量,也使用于数字常量)

    较小的数值

    0.1 + 0.2 === 0.3;  // false

    可以使用Number.EPSILON 来比较两个数字是否相等(在指定的误差范围内)

    整数的安全范围

    最大数为 2^53 - 1, 9007199254740991      Number.MAX_SAFE_INTEGER

    最小整数为 -9007199254740991   Number.MIN_SAFE_INTEGER

    整数检测

    要检测一个值是否是整数,ES6 Number.isInteger(...)

            Number.isInteger(42);   // true
    
            Number.isInteger(42.3); // false

    32 位有符号整数

    虽然整数最大能够达到53位,但有些数字操作数字操作只是用32为数字。

    特殊数值

    不是值的值

    undefined 类型只有一个值,即undefined

    null  类型也只有一个值 ,即 null

    undefined

    void 运算符

    undefined 是一个内置标识符,它的值为undefined, 通过void

     运算即可得到此值。

    特殊数字

    不是数字的数字

    数学运算的操作数不是数字类型,就无法返回一个有效的数字,这

    种情况下返回的值就是NaN.

    不是数字的数字,仍然是数字类型。

    执行数学运算没有成功,这是失败返回的结果。

    无穷数

     正无穷数  Infinity

    负无穷数 -Infinity

    特殊等式

    ES6 Object.is(...)来判断两个值是否绝对相等。

          var b = -3 * 0;
          Object.is(b, -0);  // true
          Object.is(b,0); // false

    值和引用

    JavaScript 对值和引用的赋值/传递在语法上没有区别。

            var  a = 2;
            var   b = a;  // b 是a 的值的一个副本。
             b++ ;
             a; // 2
            b; // 3
    
            var  c = [1,2,3];
            var d = c; // d 是[1,2,3]的一个引用
            d,push(4);
            c;  // [1,2,3,4]
            d; // [1,2,3,4]

     简单值是通过值复制来赋值、传递, unll,undefined,字符串,数字,布尔和 symbol

    复合值,对象函数,则通过引用复制的方式来赋值/传递。

    由于引用指向的是值本身而非变量,所以一个引用无法更改另一个引用指向。

          var  a = [1,2,3,4];
          var b = a;
          a; // [1,2,3,4]
          b; // [1,2,3]
          // 然后
          b = [1,2,3];
          a; // [1,2,3]
          b; // [4,5,6]
  • 相关阅读:
    juicer 语法
    mvc 理解
    php 之 trait
    阿里P8面试官:如何设计一个扛住千万级并发的架构?
    建模
    镜像推送时出现 server gave HTTP response to HTTPS client 问题的解决方法
    git在线练习网站
    ubuntu 20.04 LTS 更换阿里云源
    Proxmox VE(Proxmox Virtual Environment)制作优盘(U盘)启动盘的教程说明方法
    KubeSphere部署Nacos集群
  • 原文地址:https://www.cnblogs.com/nmxs/p/7117539.html
Copyright © 2020-2023  润新知