matlab取变量变化范围内的点,获取范围内的所有变量

虽然每个人都会回答“不我知道“不”是正确的答案,但如果你真的需要局部变量对于一个函数,有一种受限的方式。

考虑这一职能:var f = function() {

var x = 0;

console.log(x);};

可以将函数转换为字符串:var s = f + '';

您将获得作为字符串的函数源。'function () {\nvar x = 0;\nconsole.log(x);\n}'

现在,您可以使用如下所示的解析器埃斯普里马解析函数代码并查找局部变量声明。var s = 'function () {\nvar x = 0;\nconsole.log(x);\n}';s = s.slice(12);

// to remove "function () "var esprima = require('esprima');var result = esprima.parse(s);

并查找具有以下内容的对象:obj.type == "VariableDeclaration"

结果(我删除了console.log(x)(见下文):{

"type": "Program",

"body": [

{

"type": "VariableDeclaration",

"declarations": [

{

"type": "VariableDeclarator",

"id": {

"type": "Identifier",

"name": "x"

},

"init": {

"type": "Literal",

"value": 0,

"raw": "0"

}

}

],

"kind": "var"

}

]}

我已经在Chrome,Firefox和Node上测试过这一点。

但问题使用此方法,您只需在函数本身中定义变量。例如,对于这个例子:var g = function() {

var y = 0;

var f = function() {

var x = 0;

console.log(x);

};}

您只需访问x而不是y..但你还是可以用打电话者(arguments.callee.caller.caller)在循环中查找调用函数的局部变量。如果您有所有局部变量名,那么作用域变量..使用变量名,您可以使用简单的val访问值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值