前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript: 前端拾遗-ES6基础

JavaScript: 前端拾遗-ES6基础

作者头像
西南_张家辉
发布2021-02-02 10:19:36
2340
发布2021-02-02 10:19:36
举报
文章被收录于专栏:张家辉的树屋张家辉的树屋

箭头函数和普通函数的区别

  • 箭头函数是匿名函数,不能作为构造函数,不能使用new
  • 箭头函数不绑定arguments,取而代之用rest参数

(...rest)

  • 箭头函数不绑定this,会捕获其所在的上下文的this值,作为自己的this值.其中需要注意的是: 箭头函数的 this 永远指向其上下文的 this ,任何方法都改变不了其指向,如 call() , bind() , apply()
代码语言:javascript
复制
var obj = {
  a: 10,
  b: () => {
    console.log(this.a); // undefined
    console.log(this); // Window {postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, frames: Window, …}
  },
  c: function() {
    console.log(this.a); // 10
    console.log(this); // {a: 10, b: ƒ, c: ƒ}
  }
}
obj.b();  // window
obj.c();  // 10

复制代码
  • 箭头函数没有原型属性
代码语言:javascript
复制
var a = ()=>{
  return 1;
}

function b(){
  return 2;
}

console.log(a.prototype);  // undefined
console.log(b.prototype);   // {constructor: ƒ}
复制代码

谈谈var,let,const 的使用和区别

  • 1、在 ES6之前,ES5中js只有全局作用域和函数作用域,let ==增加了块级作用域==
代码语言:javascript
复制
if(true) {
   let a = 'name'
}
console.log('a',a) // a is not defined
  • 2、let 限制了变量提升(JavaScript 中函数和变量都会提升,==函数的提升优先级大于变量的提升==,所以下面会先打印函数)

变量提升指的是变量声明的提升,不会提升变量的初始化和赋值。

代码语言:javascript
复制
function fn() {
    console.log('a', a);
    var a = 1;
    function a () {
        console.log('I am a function');
    }
}
fn() // ƒ a () {console.log('I am a function');}
复制代码

使用 let 的时候

代码语言:javascript
复制
function fn1() {
    console.log('a', a);
    let a = 1;
    function a () {
        console.log('I am a function');
    }
}
fn1();
VM1868:4 Uncaught SyntaxError: Identifier 'a' has already been declared
复制代码
  • 3、使用 var 可以重复声明变量,但是 ==let 不允许在同一块作用域内重复声明同一个变量==, 和 const 不能重复命名
  • 4、==let 不允许设置全局变量==,var 可以

const

不能修改值,const 声明的变量必须经过初始化。

以上 let 的规则同样适用于 const,但是跟 let 的区别是 const 声明的变量不能重新赋值,所以 const 声明的变量必须经过初始化。

参考

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 谈谈var,let,const 的使用和区别
  • const
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档