是否有一种方法来获得目前在javascript范围内的所有变量?
当前回答
你不能。
变量,函数声明的标识符和函数代码的参数,被绑定为变量对象的属性,这是不可访问的。
参见:
作用域链和标识符解析
其他回答
在ECMAScript 6中,通过使用代理对象将代码包装在with语句中或多或少是可行的。注意,它需要非严格模式,这是不好的做法。
函数storeVars(目标){ 返回新的代理(目标,{ 有(目标,道具){返回true;}, Get(目标,道具){返回(道具在目标中?目标:窗口)[道具];} }); } Var vars = {};//外部变量,未存储。 (storeVars (var)) { Var a = 1;//存储在vars中 Var b = 2;//存储在vars中 (函数(){ Var c = 3;//内部变量,未存储 }) (); } console.log (var);
代理声称拥有with中引用的所有标识符,因此变量赋值存储在目标中。对于查找,代理从代理目标或全局对象(而不是父作用域)检索值。Let和const变量不包括在内。
灵感来自Bergi的回答。
访问特定范围内Vars的最简单方法
打开开发人员工具>资源(Chrome) 打开具有该范围的函数的文件(提示cmd/ctrl+p来查找文件) 在该函数中设置断点并运行代码 当它停在断点时,您可以通过控制台(或范围变量窗口)访问范围变量。
注意:你想对未最小化的js做这个操作。
显示所有非私有变量的最简单方法
打开控制台(Chrome) 类型:this.window 回车
现在你将看到一个对象树,你可以展开所有已声明的对象。
你不能。
变量,函数声明的标识符和函数代码的参数,被绑定为变量对象的属性,这是不可访问的。
参见:
作用域链和标识符解析
正如大家所注意到的:你不能。 但是你可以创建一个obj并将你声明的每个var赋值给那个obj。 这样你就可以很容易地检查你的vars:
var v = {}; //put everything here
var f = function(a, b){//do something
}; v.f = f; //make's easy to debug
var a = [1,2,3];
v.a = a;
var x = 'x';
v.x = x; //so on...
console.log(v); //it's all there
如果你只是想手动检查变量以帮助调试,只需启动调试器:
调试器;
直接进入浏览器控制台。
推荐文章
- 是否有一种内置的方法来循环遍历对象的属性?
- 如何限制谷歌自动完成结果的城市和国家
- 如何在猫鼬排序?
- 清除javascript控制台在谷歌Chrome
- 在范围内获取所有变量
- 我如何使用多个引用的元素与挂钩数组?
- 组件中useState对状态更新器的多次调用会导致多次重渲染
- 什么是useState()在React?
- JavaScript: .forEach()和.map()的区别
- 最小有效JSON是多少?
- Safari和Chrome桌面浏览器无法自动播放视频
- 自动高度
- 如何将JavaScript文件链接到HTML文件?
- 在Javascript/jQuery中创建两个数字之间的所有整数数组,包括
- CSS /JS防止拖鬼图像?