草庐IT

debug-eval

全部标签

javascript - 为什么 eval() 存在?

许多程序员说使用eval()函数是一种坏的做法:WhenisJavaScript'seval()notevil?I'dliketotakeamomenttoaddressthepremiseofyourquestion-thateval()is"evil"...Isthiseval()dangerous?Buggyevaledcodecanviolatesecuritypropertiesjustaseasilyasbuggysourcecode...Whynoteval()JSON?Thereareanumberofwaysthatyoursecuritymaybecompromis

javascript - 是否有任何非 eval 方法来创建具有运行时确定名称的函数?

有没有办法用创建一个函数?真实姓名这是在运行时确定的,不使用eval,并且只使用纯JavaScript?(因此,没有生成script元素,因为这些元素是特定于浏览器环境的[并且在很多方面都是eval伪装的];不使用某个特定JavaScript引擎的非标准功能等)请注意,我并不是特别询问由具有名称的变量或属性引用的匿名函数,例如://NOTthisvarname=/*...comeupwiththename...*/;varobj={};obj[name]=function(){/*...*/};在那里,虽然对象属性有名称,但函数没有。匿名函数适用于很多事情,但不是我在这里寻找的。我希望

javascript - 在javascript中计算字符串值,而不是使用eval

有没有一种方法可以在不使用eval()的情况下计算存储在JavaScript中的字符串中的公式?通常我会做类似的事情varapa="12/5*9+9.4*2";console.log(eval(apa));那么,有人知道eval()的替代方案吗? 最佳答案 嗯,你可以使用Function()构造函数:functionevil(fn){returnnewFunction('return'+fn)();}console.log(evil('12/5*9+9.4*2'));//=>40.4 关

javascript - 在 JavaScript 中使用 eval() 的主要好处是什么?

我知道这可能是一个新手问题,但我很好奇eval()的主要好处-它最好用在什么地方?我很感激任何信息。 最佳答案 最好使用eval函数:从不。它的目的是评估一个字符串作为Javascript表达式。示例:eval('x=42');它以前用过很多次,因为很多人不知道如何为他们想做的事情编写正确的代码。例如,当为字段使用动态名称时:eval('document.frm.'+frmName).value=text;正确的做法是:document.frm[frmName].value=text;由于eval方法将字符串作为代码执行,因此每次使

javascript - 严格模式下的间接 eval 调用

我了解eval()在非严格上下文中的工作方式,但是在严格模式下使用eval()的情况让我完全困惑。当在全局范围内直接调用eval()时,变量将保留在新的eval()范围内:'usestrict';eval('vara=1;');console.log(a);//ReferenceError:aisnotdefined但是,如果我在全局范围内执行对eval()的间接调用(应该是同一件事,对吧?),它的行为就像是不是严格模式(如果你不相信我,请参阅thisJSFiddle):'usestrict';(0,eval)('vara=1;');//indirectcalltoevalconsol

javascript - eval() 和 new Function() 是一回事吗?

这两个函数在幕后做同样的事情吗?(在单语句函数中)varevaluate=function(string){returneval('('+string+')');}varfunc=function(string){return(newFunction('return('+string+')')());}console.log(evaluate('2+1'));console.log(func('2+1')); 最佳答案 不,它们不相同。eval()在当前执行范围内将字符串评估为JavaScript表达式,并且可以访问局部变量。new

javascript - console.log() 和 console.debug() 的区别?

Google对我没有帮助,因为搜索“console.debug”只会出现一堆页面,上面有“console”和“debug”字样。我想知道console.log()和console.debug()之间有什么区别。有没有什么方法可以使用一堆console.debug()语句,然后只需轻按一下开关即可轻松关闭所有调试语句,使其不再发送到控制台(例如在启动站点后)? 最佳答案 技术上console.logconsole.debug和console.info是相同的但是,它们显示数据的方式略有不同。console.debug在浏览器的JS控制

debugging - 如何消除全局变量

我刚开始学习围棋,到处都提到建议最好避免使用全局变量。我有这段代码:packagemainconstscriptVersion="1.1"vardebug=0funclogHandler(t,estring){switcht{case"warning":fmt.Println("WARNING|",e)case"error":fmt.Println("ERROR|",e)os.Exit("1")case"debug":ifdebug==1{fmt.Println("DEBUG|",e)}default:fmt.Println("INFO|",e)}}foruserOptsValue:=

debugging - 在vs-code中调试go-lang时如何指定生成的调试二进制文件的路径

在vs-code调试go-lang时如何指定生成调试二进制文件的路径?我试过修改launch.json文件但没有用。我现在可以在vs-code中很好地调试go程序,唯一的问题是每次我调试完后,我的项目目录下都会生成一个调试二进制文件,如下图。我想知道我可以指定生成调试二进制文件的目录吗?我在我的问题的mac屏幕截图上: 最佳答案 接下来是vscode-goissue1345:"关闭调试session后删除由delve创建的二进制文件"delveisthedebuggerforGolang,oratleastit'stheonetha

go - 安装 nvim-go 失败并显示 "Undefined variable: g:go#debug"

我正在切换到neovim并尝试让nvim-go运行。我的init.vim中的Plug部分如下所示:callplug#begin('~/.vim/plugged')Plug'zchee/nvim-go',{'do':'make'}Plug'sebdah/vim-delve'callplug#end()如果我打开nvim并运行PlugInstall,我会收到以下错误:Errordetectedwhileprocessing/home/domma/.vim/plugged/nvim-go/plugin/nvim-go.vim:line20:E121:Undefinedvariable:g:g