zoukankan      html  css  js  c++  java
  • js作用域理解---欺骗词法

    举例:

    function foo (str,a){

      eval(str)

      console.log(a,b)

    }

    var b = 2;

    foo('var b = 3',1)    //1,3

    eval中所执行的代码中有一个或多个声明,就会对eval所处的词法作用域进行修改,在运行期修改书写期的词法作用域,尽量少用,在遇到eval和with是编译无法优化,对性能会有损失。

    注意:

    function foo (str){

    "use strict"

      eval(str)

      console.log(a)  //a is not defined

    }

    foo('var a = 1')   

    在严格模式下,执行上面代码,作用域是不会被修改的。

    with对词法作用域的修改还未理解,求解惑

  • 相关阅读:
    vc++ 编译器工具
    lesson 17 进程间通信 孙鑫 VC++
    VC++ msdn
    VC++ 相关问题
    MySQL
    Git
    Angular
    Linux
    阿里云服务器
    Git
  • 原文地址:https://www.cnblogs.com/kangyy/p/14086806.html
Copyright © 2011-2022 走看看