前端小知识记录

var与let、const的区别

  1. var声明的变量会挂载到window上,而letconst声明的变量不会,即var声明的均为全局变量。

  2. var声明变量存在变量提升,letconst不存在变量提升,即var定义的变量可以先使用后定义

  3. letconst声明形成作用域,只能在本作用域中使用即该{}

  4. 同一作用域下letconst不能声明同名变量,而var可以

  5. 暂存死区

    `var` a = 100;
    
    if(1){
        a = 10;//就近原则
        //在当前块作用域中存在a使用let/const声明的情况下,给a赋值10时,只会在当前作用域找变量a,
        // 而这时,还未到声明时候,所以控制台Error:a is not defined
        let a = 1;
    }
    
  6. const

    • 一旦声明必须赋值,不能使用null占位
    • 声明后不能再修改
    • 如果声明的是复合类型数据,可以修改其属性,如数组、对象

    通过 var 声明的变量有初始值 undefined,而通过 let声明的变量直到定义的代码被执行时才会初始化

generator函数

generator(生成器)是ES6标准引入的新的数据类型。一个generator看上去像一个函数,但可以返回多次。
​ 定义如下:

function* foo(x){
    yield x+1;
    yield x+2;
    return x+3;
}

generator和函数不同的是,generatorfunction*定义,除了return语句,还可以用yield返回多次

generator和普通函数相比,有什么用?

  1. generator可以在执行过程中多次返回变量状态的函数
  2. 把异步回调代码变成“同步”代码,使代码变得有层次感,不需要大量的嵌套
try {
    r1 = yield ajax('http://url-1', data1);
    r2 = yield ajax('http://url-2', data2);
    r3 = yield ajax('http://url-3', data3);
    success(r3);
}
catch (err) {
    handle(err);
}

async函数

ES2017标准引入了 async函数,使得异步操作变得更加方便。async函数是 generator 函数的语法糖。

async函数对 generator 函数的区别:

  1. 内置执行器

    generator 函数的执行必须靠执行器,而async函数自带执行器。也就是说,async函数的执行,与普通函数一模一样,只要一行。

  2. 更好的语义

    asyncawait,比起*yield,语义更清楚了。async表示函数里有异步操作,await表示紧跟在后面的表达式需要等待结果。

  3. 正常情况下,await命令后面是一个Promise对象。如果不是,会被转成一个立即resolvePromise 对象。

  4. 返回值是Promise

    async函数的返回值是Promise 对象,这比 generator 函数的返回值是Iterator 对象方便多了。你可以用then方法指定下一步的操作。
    ​ 进一步说,async函数完全可以看作多个异步操作,包装成的一个 Promise对象,而await命令就是内部then命令的语法糖。

获取select下拉框参数

form表单提交时,浏览器根据"select的名字 =被选择的option的value"这种形式,放入http url的请求报文中,若有多个,我们Q在服务器端可以用List<value的类型>方式接收这些数据

prop和attr的使用

​ 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。

​ 对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法。

checkbox的使用

//让某个icon的checkbox被选中
$("#div1 :radio[value='"+value1+"']").attr("checked",true);

//获取多个checkbox被选中的icon值
const ckbs = $("#div1 [name='value1']:checked").val();
发布了81 篇原创文章 · 获赞 124 · 访问量 38万+

猜你喜欢

转载自blog.csdn.net/qq_38697437/article/details/103091215