zoukankan      html  css  js  c++  java
  • ES6——入门学习指南

    ES6的简介:

      ECMAScript6.0(以下简称ES6)是JavaScript语言的下一代标准,已在2015年6月正式发布了。它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业开发语言

    ESCAScript和JavaScript的关系:

       要讲清楚这个问题,需要回顾历史。1996 年 11 月,JavaScript 的创造者 Netscape 公司,决定将 JavaScript 提交给标准化组织 ECMA,希望这种语言能够成为国际标准。次年,ECMA 发布 262 号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为 ECMAScript,这个版本就是 1.0 版。

      该标准从一开始就是针对 JavaScript 语言制定的,但是之所以不叫 JavaScript,有两个原因。一是商标,Java 是 Sun 公司的商标,根据授权协议,只有 Netscape 公司可以合法地使用 JavaScript 这个名字,且 JavaScript 本身也已经被 Netscape 公司注册为商标。二是想体现这门语言的制定者是 ECMA,不是 Netscape,这样有利于保证这门语言的开放性和中立性。

      因此,ECMAScript 和 JavaScript 的关系是,前者是后者的规格,后者是前者的一种实现(另外的 ECMAScript 方言还有 JScript 和 ActionScript)。日常场合,这两个词是可以互换的。

    了解一些ES6的知识:

      在js中的声明变量有:var , function

      而ES6它提供了四种声明变量的方式,分别是const,let,class,import

      需要注意:不能忽略函数的形参,函数的私有变量

      声明变量的区别:

        var 定义变量

        var有变量提升,但是不能定义(等号赋值),给window添加了一个对应的属性

        function 既可以提前声明,同时还定义了

        定义:所谓的定义,就是给这个变量赋值了

        let:是es6提供的一种声明变量的方式

          * 没有变量提升,在声明之前不能使用

          * 不能重复声明

          * 不会给window添加属性

      作用域:

         var 的作用域:

            var声明的变量,作用域分为两种,全局作用域和局部作用域

            全局作用域:

              在window下声明的变量或者在函数外声明的变量

            局部作用域:

              在函数内声明的变量

      了解浏览器执行的机制

        浏览器在执行的时候,首先,开辟一个大空间叫window,window下面主要分两个模块,一个叫栈,一个叫堆

        栈用来存放变量的内存地址,堆主要存放代码块的,然后浏览器从上到下执行代码

      function声明的变量

        function声明的变量也会给window添加一个属性,属性值是方法

        函数的归属:

          函数归谁,跟它在哪调用无关,跟它在哪定义有关

          

        任何一个函数执行后,都有一个返回值,如果写了return,return的是什么就得到什么,如果没有return,得到的就是undefined

        

        函数在if中的特殊情况:

          在if语句中定义的函数只声明不会定义,当条件成立的时候,if模块不管函数在哪声明的函数,都会第一步对这个函数先定义,在去执行if里面的代码

            这个会报错,fn is not function

            if的判断条件不成立,所以不执行if

        对于变量来说,作用域只有window和函数

        浏览器会找到window下所有带var的变量

          

       块级作用域:

        在块级作用域下,子级可以访问父级的,父级不可以访问子级

        带{}的都是块级作用域,if{},for{},对象{};块级作用域相等于私有作用域

        函数不是块级作用域

        var,function没有块级作用域这个概念,let和const有块级作用域这个概念

        在块级作用域下var 和function跟在window下是一样的,function有个特殊的,在块级作用域前只会提前声明不会定义

                   

        在块级作用域下let和const声明的变量是私有的,外部访问不到

               

        for 循环下let声明的变量不会泄露

              而var   

      块级作用域与对象的区分:

        {}如果想表示对象,不能放在行首,就是{}前面不能没有东西

        如果{}前面没有东西,就是块级作用域

          对象:

             或者是

            eval() 全局方法,将字符串转换成js代码

          块级作用域:

            

      暂时性死区的场景:

        

        使用变量b在定义b之前,所以出现了暂时性死区

         将b=2与a=b换一下位置,就不会报错了

         var a=a与let a=a的区别:

          var a=a,不报错,因为var可以变量提升,在等号赋值的时候,从右往左,使用变量a,此时a是undefined,赋值给a就是把undefined赋值给a,所以a还是undefined

          let a=a,报错,因为赋值运算是从右往左,右边使用变量a结果发现a没有声明,而let语法规定不能在定义前使用变量,所以报错

      函数参数默认值:

        写法上,在默认值的写后面,没有默认值的写在后面

            如果没有默认值的写后面,有默认值的写前面,前提条件是传实参

        如果传对应的参数,就不要默认值了,不是赋默认值,然后用实参去覆盖

      

  • 相关阅读:
    HDU 5280 Senior's Array (暴力,水)
    LeetCode Intersection of Two Linked Lists (找交叉点)
    LeetCode Pascal's Triangle II (杨辉三角)
    LeetCode Lowest Common Ancestor of a Binary Search Tree (LCA最近公共祖先)
    LeetCode Binary Tree Level Order Traversal (按层收集元素)
    LeetCode Balanced Binary Tree (判断平衡树)
    LeetCode Maximum Depth of Binary Tree (求树的深度)
    LeetCode Palindrome Linked List (回文链表)
    jstl表达式的应用的条件
    dao层写展示自己需要注意的问题
  • 原文地址:https://www.cnblogs.com/yanghuiting/p/11139500.html
Copyright © 2011-2022 走看看