zoukankan      html  css  js  c++  java
  • 高性能Javascrip 改变作用域链

    有两个语句可以改变作用域链,

    with

    给对象的所有属性创建了一个变量以免重写代码

    一个新的可变对象被创建,它包含了参数指定对象的所有属性,这个对象被所有作用域链的头部,这意味着函数的所有局部变量现在处于第二个所用域链对象中,因此访问的代价更高了.

    try catch

    是个非常有用的语句

    精简的代码来最小化catch子句对性能的影响,

    一个好的模式是将委托给一个函数处理

    try{}

    catch(e) {

    handleError(e);

    }

    动态作用域

    with   try catch  eval  

    function execute(code) {

    eval(code);

    function subroutine(){

      return window;

    }

    var w = subroutine();

    }

    闭包 作用域 内存

    可以让函数访问局部作用域之外的数据,

    事件处理器就是一个闭包,

    当闭包被创建时,它的Scope属性被初始化为这些对象,包含了与运行期上下文作用域链相同的对象引用,这带来一个副作用,激活对象无法被销毁。会造成内存泄露   ie使用非原生javascript 对象来实现dom

    闭包要经常访问大量跨作用域的标识符,会导致性能损失。可以先建立局部变量来做

     

  • 相关阅读:
    支持向量机SVM知识点概括
    决策树知识点概括
    HDU 3081 Marriage Match II
    HDU 3572 Task Schedule
    HDU 4888 Redraw Beautiful Drawings
    Poj 2728 Desert King
    HDU 3926 Hand in Hand
    HDU 1598 find the most comfortable road
    HDU 4393 Throw nails
    POJ 1486 Sorting Slides
  • 原文地址:https://www.cnblogs.com/yushunwu/p/2174273.html
Copyright © 2011-2022 走看看