zoukankan      html  css  js  c++  java
  • JS 基础逻辑关系

      JS中万物皆为对象。

      JS代码应做到高内聚、低耦合。

          内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。它描述的是模块内的功能联系。

          耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。 程序讲究的是低耦合,高内聚。就是同一个模块内的各个元素之间

          要高度紧密,但是各个模块之间的相互依存度却要不那么紧密。

            内聚和耦合是密切相关的,同其他模块存在高耦合的模块意味着低内聚,而高内聚的模块意味着该模块同其他模块之间是低耦合。在进行软件设计时,应力争做到高内聚,低耦合。

      JS面向对象三大特征为:封装、继承、多态。

      函数的三属性:length形参的个数,name函数名,prototype函数原型。这是看得见的属性,还有scope作用域等看不到的属性。

      JS的执行过程:

        1.语法检测:检测你的代码有没有基本的语法错误。

        2.预编译:

          ①会生成一个对象,这个对象装的就是作用域,称为GO(global object),当全部挂载完成后,然后代码再去逐行执行。

            GO = {  }

          ②分析var声明,变量名作为GO对象的属性名,值为undefined。

            GO = { 变量名:undefined }

          ③分析函数声明,函数名作为GO对象的属性名,值为函数体,如果遇到同名的属性,直接覆盖掉。

            GO = { 变量名:undefined

                函数名:函数体 }

        3.逐行执行

          ①函数调用执行前的一瞬间,会生成一个函数的AO对象(active object)。

          ②分析参数,形参作为AO对象的属性名,实参作为AO对象的属性值。

          ③分析var变量声明。

          ④分析函数声明,同名覆盖。

      作用域链:查找过程是从上往下进行查找,从当前父级找起,直到全局作用域。无法找子级作用域或者兄弟级作用域。

      闭包:

        定义:当内部函数被保存到了外面的时候,就会形成闭包,闭包会导致原有的作用域链不释放,造成内存的泄露,故而尽量不用闭包则不用。

        功能:①实现共有变量 ②作缓存 ③实现封装,让属性私有化 ④模块化开发,防止污染全局变量。

      

      函数声明和函数表达式区别:

        1.在预编译的时候有区别;

        2.变成了函数表达式以后,这个函数名基本上就没有作用;

        3.表达式可以被直接拿来用的,函数表达式也是表达式,可以直接用执行符号执行。

  • 相关阅读:
    Lintcode: Delete Digits
    Lintcode: Digit Counts
    Lintcode: Compare Strings
    Lintcode: First Position of Target (Binary Search)
    Lintcode: Binary Representation
    Lintcode: Backpack II
    Lintcode: Backpack
    Lintcode: A+B problem
    Summary: Lowest Common Ancestor in a Binary Tree & Shortest Path In a Binary Tree
    Summary: Prime
  • 原文地址:https://www.cnblogs.com/yeming980912/p/11041075.html
Copyright © 2011-2022 走看看