JavaScript 基本常识

2020-11-02  本文已影响0人  云凡的云凡

一、 JavaScript 引擎是单线程模拟多线程,有一个轮转时间片,短时间之内轮流执行多个任务的片段。

js 单线程模拟多线程的过程:
1.任务一 任务二
2.切分任务一 任务二
3.随机排列这些任务片段,组成队列
4.按照这个队列顺序将任务片段送进JS进程
5.JS线程执行一个又一个的任务片段
中间轮转的毫秒或者微妙的卡顿是看不到的

二、JS的值

  1. 原始值(基本类型)有Number String Boolean undefined null 布尔值

null 空值 初始化组件 函数 销毁函数 占位。undefined 是未被定义。null 是空值。

  1. 五种比较常用的引用值 object array function date RegExp

三、JS内存之栈内存(Stack)与堆内存(Heap)

原始值在栈内存中,先进后出,原始值在栈内存中,不可改,当重新给一个变量赋值时,会重新开辟一个空间存这个新的值,而原来的值还存在栈内存中,只不过变量的指针(地址)指向新开辟的空间。
引用值的地址(指针)存在栈内存,值并不是存在栈内存,而是存在堆内存中,把 arr1 赋值给 arr2 ,其实是指向同一块堆内存。栈内存会存储堆内存的地址。当arr1 重新赋值了就跟原先的值没有关系了。

image.png

四、引用值中的数组与对象初识

image.png

五、基本运算操作符

权重:括号运算符 > 普通运算符 > 赋值

        var a = '123', b = 456, c = 'dfg'
        console.log(a + b);  //字符串拼接  123456
        console.log(a * b);  //123*456  56088
        console.log(a / b);   // 123/456
        console.log(a + c);   //字符串拼接 
        console.log(a * c);   // NaN
        console.log(a / c);   // NaN

        console.log('_______________');
        var arr2 = [1, 2, 3], arr3 = [7, 8, 9]
        console.log(arr2 + arr3);  //1,2,37,8,9
        console.log(arr2 - arr3);  // NaN
        console.log(arr2 * arr3);  // NaN
        console.log(arr2 / arr3);  // NaN

        ass = 'qwe' + 1 + 1
        console.log(ass);  //qwe11

六、基本运算操作符

       console.log(1 / 0);  //Infinity  正无穷
        console.log(-1 / 0);  //-Infinity  负无穷

        console.log(0 % 6);  //0
        console.log(2 % 6);  //2

        var a = 4, b;
        b = 1 + a++; //a++ 先赋值 再加
        console.log(b, a);  //5 5
        console.log(a);  //5  



        var c = 2, d;
        d = 3 + ++c;  //++c 先加 再赋值
        console.log(d, c);  //6 3
        console.log(c);


        var q = 8, w;
        w = q-- + --q  // w = --q + --q
        console.log(w, q); //14 6

七、比较运算符

       //  > < >= <= == === != !==
        // 数字和字符串比较:字符串转换成数字再进行比较
        var a = 1 > '123'
        console.log(a);  //false 1>123
        // 字符串对比:字符串相对应的ASCII码(字符相对应的十进制代码)
        // 多个字符的,从左到右依次对比,直到比较出ASCII码的大小为止。
        var b = '1.25' > '12'
        console.log(b);  //false

        // 相等不看数据类型
        // 全等是值和数据类型
        var c = NaN == NaN
        console.log(c);  //false  NaN 与包括自己在内任何东西都不相等

八、逻辑运算符

        // 与&&  或||   非!
        //除 undefined, null, NaN, "", 0, false 外都是真

        var a = 1 && 2
        // 遇到真就往后走
        console.log(a);  //2
        var b = 1 && 2 && undefined && 5
        // 遇到假或走到最后就返回当前的值
        console.log(b);  //undefined


        var c = 1 || 2
        // 遇到假就往后走,遇到真或者走到最后就返回当前的值。
        console.log(c);  //1
        var d = 0 || null || 1 || 0
        console.log(d);  //1

        var name = ''
        console.log(name || '未找到数据');//未找到数据

        a.onclick = function (e) {
            // ie 浏览器 的点击事件存在 window.event
            // 其他的就村存在 e 中
            var event = e || window.event
        }

        var ee = !1
        console.log(ee);  //false
上一篇下一篇

猜你喜欢

热点阅读