zoukankan      html  css  js  c++  java
  • 速读《Javascript模式》(一)(简介、var的变量提升以及es6新规范的let)

    本系列为博主开的新坑,主要是对书的一些缩写和概括,加上博主自己的一些理解,提取出的一些书的主要内容。

     

    模式

     

    模式是指一个通用问题的解决方法,一个模式不仅仅是一个可以用来复制粘贴的代码解决方案,更多的提供了一个更好实践经验,有用的抽象化表示和解决一类问题的模板。

     

    模式

    l  设计模式

    l  编码模式

    l  反模式

     

     

    Javascript

     

    面向对象的弱类型语言

     

    ①    非对象(数值、字符串、布尔值)-> 对象

    ②    定义一个变量即在处理对象

    (1)变量会自动成为内置对象的一个属性,成为激活对象

    (2)该变量=伪类,因为它拥有其自身的属性,该属性决定了该变量是否可以被修改,被删除和在一个for-in循环中进行枚举

    *在es3中没有对外提供

    *在es5中提供符方法操纵

     

    函数对象—方法

     

    基本

    一、全局变量

    *应避免全局变量的使用 
    *采用单一var模式
    隐式创建:

    1、变量未声明便引用

    2、带有var声明的链式赋值


    隐含全局变量与明确定义的全局变量有细微的不同,区别在于delete是否能删除

    • 使用var创建的全局变量不可删除
    • 不使用var创建的隐式全局变量可以删除
    *es5 严格模式下 没有声明就引用的变量会报错

    访问全局对象采用
    var global = (function(){
                    return this;
                }());

    凌散变量
    凌散变量存在变量提升和作用域的问题
     //反模式
            myname = "global"; //全局变量
            function func() {
                alert(myname); //未定义
                var myname = "local";
                alert(myname); //局部变量
            }
            func();

    相当于
    myname = "global"; //全局变量
            function func() {
                var myname;
                alert(myname); //未定义
                myname = "local";
                alert(myname); //局部变量
            }
            func();

    结果为


    es6 的let 和 const不存在变量提升 顺便测试一下

    myname = "global"; //全局变量
            function func() {
                console.log(myname); //未定义
                let myname = "local";
                console.log(myname); //局部变量
            }
            func();


    报错啦 


    未完待续~

  • 相关阅读:
    计算机网络原理精讲第一章--基本介绍
    tensorflow基础【8】-优化器
    tensorflow基础【7】-loss function
    循环神经网络(五)-LSTM进阶
    python23的区别-日常记录
    python 多版本共存
    再谈权重共享
    循环神经网络(四)-LSTM
    循环神经网络(二)-极其详细的推导BPTT
    链式法则玩转反向传播
  • 原文地址:https://www.cnblogs.com/suedar/p/8506327.html
Copyright © 2011-2022 走看看