能否在不执行函数的情况下访问函数内的元素

function test() {
    var a = 1;

    alert(1);

    return {
        numA: a
    }
}

function test2() {
    console.log(test().numA)
}

test2();

如上面这段代码,如果想在test2()里面访问test()的变量a,就一定会执行那个alert(1)吗?有没有办法不执行到alert(1) 就可以得到a的值呢(除了设为全局变量这个方法)?

阅读 2.5k
3 个回答

首先你不执行test方法,肯定得不到这个方法中的变量,其次执行了这个方法肯定会执行alert
所以可以为test方法加一个参数,用作控制是否执行alert

function test(is_alert) {
    var a = 1;

    if (is_alert) {
        alert(1);
    }

    return {
        numA: a
    }
}

function test2() {
    console.log(test(false).numA)
}

test2();

不能。如果必须这么干的话。。。你试试

function test() {
    alert(1)
}
test.a = 1

反正函数也是能添加属性的,感觉有点滑稽(都这么写了为啥不用对象。。。

局部变量只在函数执行的时候创建,执行完就销毁。你可以使用全局变量或者闭包来实现访问。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题