• ES6 (1):const/let


    关于ES6  可以到阮一峰大神那学习~ http://es6.ruanyifeng.com/#docs/let

    再次个人记录学习的理解,章节就按照阮大神书的顺序一篇篇的记录与练习

    历史:

    ECMASCRIPT :标准(规格)

    JAVASCRIPT:实现

    ES5 之后的版本统称为 ES6(ESMASCRIPT2015 之后)

    一、let/const : let 只在所在的代码块内有效(块级作用域,阻止向上提升,在之前的文章有提到),在箭头函数中亦是如此,在块级作用域中,函数声明语句的行为类似于let,在块级作用域之外不可引用。

    但是为了兼容之前的老版本,浏览器的实现可以不遵守上面的规定。

    为了在块级作用域内声明函数,应该写成函数表达式,而不是函数声明语句:

    表达式:let x = function(){}

    声明语句:function x(){}

    const 是只读常量,其值不能改变(在声明常量时必须初始化,否则报错)。

     const 保证的是其保存的内存地址不变,如果不是简单类型数据,则有可能发生变化。

    二、顶层对象

    浏览器:window

    Node:global

    var /function 声明的是全局变量同样是顶层对象的属性、而let/const/class 声明的全局变量不属于顶层对象。

    顶层:

    let 不属于顶层

     另外顶层对象不统一:

    浏览器:window

    浏览器和web worker:self 指向顶层对象

    node:global

    为了实现兼容:使用this,但是this有一些小问题需要注意:

    全局环境:this 返回顶层对象。node 和es6模块this 指向当前模块

    函数中:若不是对象应用或强绑定,那么this 同样执行顶层对象(非严格模式,关于this可以参考之前写的随笔)

    new Function('return this')() 返回全局对象。(个人觉得尽量不要用构造器的方式声明函数)

    下面是阮大神书中提供方法:

    // 方法一
    (typeof window !== 'undefined'
       ? window
       : (typeof process === 'object' &&
          typeof require === 'function' &&
          typeof global === 'object')
         ? global
         : this);
    
    // 方法二
    var getGlobal = function () {
      if (typeof self !== 'undefined') { return self; }
      if (typeof window !== 'undefined') { return window; }
      if (typeof global !== 'undefined') { return global; }
      throw new Error('unable to locate global object');
    };
    
    成灰之前,抓紧时间做点事!!
  • 相关阅读:
    手把手教你利用Win7系统快速搭建属于自己的网站
    一文带你解读​JavaScript中的变量、作用域和内存问题
    盘点3款高端大气上档次的黑客游戏
    Mybatis缓存
    Mybatis中的设计模式
    Mybatis插件原理和自定义插件
    MyBatis启动流程
    《前端运维》一、Linux基础02用户与权限
    《前端运维》一、Linux基础01基础命令与vim
    测试面试题集锦(五)| 自动化测试与性能测试篇(附答案)
  • 原文地址:https://www.cnblogs.com/jony-it/p/10930460.html
Copyright © 2020-2023  润新知