zoukankan      html  css  js  c++  java
  • 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');
    };
    
    成灰之前,抓紧时间做点事!!
  • 相关阅读:
    关于重载和重写的区别
    UML的关联(Association), 聚合(Aggregation), 组合(Composition)区别
    解析CSS加密技术之“障眼法”
    ASP.NET中MEMCACHED
    新建项目的无法应用已有项目
    C# 判断两张图片是否一致的快速方法
    压力测试中需要掌握的几个基本概念
    软件测试Web数据分析工具HttpWatch安装
    在SQL Server实现最短路径的搜索
    从算法入手讲解如何在SQL Server中实现最优最简
  • 原文地址:https://www.cnblogs.com/jony-it/p/10930460.html
Copyright © 2011-2022 走看看