重温JS——(ES6)运算符与语句(面试题、箭头函数、class类、模块、)

目录

运算符与语句

1、箭头函数

(1)箭头函数定义

(2)适合使用的场景

(3)总结

2、class类

(1)概述

(2)类定义

(3)类的主体

(4)类的继承

3、模块

(1)概述

(2)特点

(3)export导出

(4)import导入


运算符与语句

面试题: 优雅降级,渐进增强

渐进增强:在网页开发中,渐进增强认为应该专注于内容本身,一开始针对低版本的浏览器构建页面,满足最基础功能后,再针对高级浏览器进行效果交互,追加各种功能以达到更好的用户体验;即以最低的要求实现最基本的功能,向上兼容

优雅降级:指一开始针对高版本/高级浏览器进行页面构建,先完善所有功能后,再针对各个不同的浏览器进行测试,修复,保证低版本浏览器也有进本功能;即以高要求,高版本浏览器为准,向下兼容

两者的区别:

a. 优雅降级是从复杂的现状开始,并试图减少用户体验的供给

b. 渐进增强则是从一个非常基础的,能够起作用的版本开始,并不断扩充,以适应未来环境的需要

c. 降级(功能衰减)意味着往回看;而渐进增强则意味着朝前看,同时保证其根基处于安全地带。

1、箭头函数

(1)箭头函数定义

箭头函数提供了一种更加简洁的函数书写方式。基本语法是:

参数 => 函数体
(参数) => {函数体}

基本语法:箭头函数只有定义式,没有声明式

//普通函数
var f = function(a){
 return a;
}
f(1);  //1
​
//箭头函数   只有一个参数可以省略小括号
var f = a => a
f(10); //10

当箭头函数没有参数或者有多个参数要用 () 括起来。函数体内只有一句,大括号可以省掉

var f = (a,b) => a+b;
//var f = (a,b) => {return a+b}   //这个和上一排一样的
f(6,2);  //8

当箭头函数函数体有多行语句,用 {} 包裹起来,表示代码块,当只有一行语句,并且需要返回结果时,可以省略 {} , 结果会自动返回。

var f = (a,b) => {
 let result = a+b;
 return result;
}
f(6,2);  // 8

当箭头函数要返回对象的时候,为了区分于代码块,要用 () 将对象包裹起来

var f = (id,name) => ({id: id, name: name});
f(6,2);  // {id: 6, name: 2}

注意点:没有 this、super、arguments 和 new.target 绑定。

this就是 离它最近 的嵌套级别的function或者方法的调用者,如果没有,就是window

        var obj ={say:() => {
            // 箭头函数里面没有 this 对象,
            // 此时的 this 是外层的 this 对象,即 Window 
            console.log(this);   //window
        }}
        obj.say(11);

        var b = () => {
            console.log(arguments);
        }
        b(111); // ReferenceError: arguments is not defined
   

以下情况:对象中使用箭头函数,this表示全局Window对象

var obj = {
    name: "xx",
    show: function() {
        console.log(this); //this表示当前对象
    },
    say: () => {
        console.log(this); //this表示全局window对象
    }
}

箭头函数体中的 this 对象,是定义函数时的对象,而不是使用函数时的对象。

function a() {
    setTimeout(function() {
        console.log(this); //this始终指向全局Window对象
    }, 100)
}
a.call({num: 200});
                    
function b() {
    setTimeout(() => {
        console.log(this); //this绑定的是b函数中的this对象
    }, 100);
}
b.call({num: 300});

注意:箭头函数不可以作为构造函数,不能用作创建对象,也就是不能使用 new 命令,否则会报错

function Person() {
    console.log(this);
}
new Person(); //Person {}
            
var People = ()=>{
    console.log(this);
}
new People(); //TypeError: People is not a constructor

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值