zoukankan      html  css  js  c++  java
  • JavaScript-Note

    1. JavaScript的类型,string, number, boolean, array, object, null, undefine

    2. js变量
    函数内声明的为局部变量,只在函数内访问;函数外声明的为全局变量,网页上所有脚本和函数都可以访问。
    局部变量会在函数运行后被删除;全局变量会在页面关闭后被删除。
    把值赋给尚未声明的变量,该变量将被自动作为全局变量声明,即使是在函数内赋值,也是如此。

    1.let, const

    变量命名,let和const。
    let具有块级作用域,不存在变量提升,不能重复声明,全局作用域下不是window对象的属性。
    const限定的是,变量指向的地址不能变。对于简单类型(数值、字符串、布尔值),值就保存在这个地址里,而复合类型(数组和对象),变量指向的地址,保存的是指针。

    变量比较,必须用'==='和'!=='


    2.解构赋值

    变量解构赋值,本质上是一种“模式匹配”,等号两边模式相同,左边变量就会被赋予对应的值。解构不成功的变量值为undefined。可以使用默认值。

    对象的解构,变量必须与属性同名,才能取到正确的值。也可以用{模式: 变量}的形式进行解构。

    解构赋值的规则是,只要等号右边的值不是对象或数组,就先转化为对象。由于undefined和null无法转为对象,所以对它们进行解构赋值会报错。

    函数参数也可以使用解构赋值。

    数组的解构赋值用'[]',对象的解构赋值用'{}',字符串会转化为类数组,所以也用'[]'。

    解构赋值的用途:
    1)交换变量的值
    2)从函数返回多个值
    3)函数参数的定义
    4)提取JSON数组
    5)函数参数的默认值
    6)遍历Map解构
    6)import模块的指定方法


    3.字符串的扩展

    模板字符串:模板字符串是增强版的字符串,用反引号(`)标识,可以用作普通字符串、定义多行字符串、在字符串中以(${varName})的形式嵌入变量。大括号内可以放入任意的JavaScript表达式。

    Promise将value resolve出来,作为后续then的参数
    Promise.resolve(value)
    .then((value) => {

    })

    Promise.reject(error)
    .catch((e) => {

    })


    ######事件循环

    JavaScript的并发模型基于“事件循环”。

    js引擎维护一个**消息队列**,每个消息都有一个处理函数与之关联。当一个事件发生且对事件绑定了监听器时,就会把该事件及其处理函数添加到消息队列中,没有监听器则会丢失。

    而主循环用于从消息队列中取出消息,并执行处理函数。每一个消息完整执行后,其他消息才会被执行,函数不会被抢占。当队列中没有任何消息时,会等待同步消息地到达。

    setTimeout会在给定时间之后,将小题添加到消息队列,并不保证立刻执行。

    收刀入鞘吧!凡动刀的,必死在刀下!
  • 相关阅读:
    C++容器不要类型转换
    栈区、堆区、全局区、文字常量区、程序代码区
    C++数据类型字节数
    Exception-Safe Generic Containers
    饭碗是要靠抢的
    Wireshark抓包实例分析TCP重复ACK与乱序
    OSPF
    孩子,我该让你更好的长大!
    云,除了卖,我们还剩下什么?
    动态路由3--链路状态路由选择协议
  • 原文地址:https://www.cnblogs.com/qiuyi116/p/9008829.html
Copyright © 2011-2022 走看看