zoukankan      html  css  js  c++  java
  • 命名函数、eval创建局部变量

    1、命名函数

    1 var f = function double(){return x *2;}
    2 该语句将函数绑定到变量f,而不是变量double
    3 匿名的函数表达式:
    4 var f = function(x) {return x*2;}

    2、关于eval创建局部变量

    1 var y = "global";
    2 function test(x){
    3     if (x) {
    4         eval("var y = 'local';");
    5     };
    6     return y;
    7 }
    8 test(true); // "local"
    9 test(false); // "global"
    1 var y = "global";
    2 function test(src){
    3     eval(src);
    4     return y;
    5 }
    6 test("var y = 'local';"); // "local"
    7 test("var z = 'local';"); // "global"
    1 var y = "global";
    2 function test(src){
    3     (function(){eval(src);})();    
    4     return y;
    5 }
    6 test("var y = 'local';"); // "global"
    7 test("var z = 'local';"); // "global"

    eval函数具有访问调用它那时的整个函数的作用域,大多数函数只能访问定义它们所在的作用域,而不能访问除此之外的作用域

    1 var x = "global";
    2 function test(){
    3     var x = "local";  
    4     return eval("x");
    5 }
    6 test(); // "local"

    绑定eval函数到另一个变量名,通过该变量名调用函数会使代码失去对所有局部作用域的访问能力

    1 var x = "global";
    2 function test(){
    3     var x = "local";
    4     var f = eval;  
    5     return f("x");
    6 }
    7 test(); // "global"
  • 相关阅读:
    JetBrains下载历史版本
    php入门笔记
    Ajax获取服务器信息
    Ubuntu上安装PHP环境-mysql+apache+php-Linux操作系统
    Ubuntu彻底删除/卸载mysql,php,apache
    轻松理解JS基本包装对象
    JS事件委托
    浅谈JS事件冒泡
    JS闭包那些事
    浅谈JS的变量提升
  • 原文地址:https://www.cnblogs.com/zhanghuiyun/p/5872000.html
Copyright © 2011-2022 走看看