草庐IT

javascript - 使用 "var that = this"了解 Javascript 作用域

这个问题在这里已经有了答案:InJavascript,whyisthe"this"operatorinconsistent?(8个答案)关闭9年前。假设我在一个对象中有以下属性方法:onReady:functionFlashUpload_onReady(){Alfresco.util.Ajax.jsonGet({url:Alfresco.constants.PROXY_URI+"org/app/classification",successCallback:{fn:function(o){varclassButtonMenu=[],menuLabel,that=this;varsele

javascript - Eclipse 可以在不同的行上格式化逗号分隔的语句 (var a = 1, b=2;) 吗?

我正在使用EclipseJSDT,默认的格式设置发生了类似的变化vara=1,b=2;在一条丑陋的线上。格式化前的样式是JSLint推荐的,请问Eclipse可以设置成这样格式化吗?现有的格式化程序设置似乎不提供对逗号语句的控制。 最佳答案 以下JavaScriptBeautifier插件可用于Eclipse。https://github.com/atlanto/eclipse-javascript-formatter它可用于将单个语句-多个变量声明分成多行。README.md文件中提供了有关使用上述插件的更多信息。

javascript - 为什么将函数分配给 var 与简单地定义它不同?

这个问题在这里已经有了答案:varfunctionName=function(){}vsfunctionfunctionName(){}(41个回答)关闭9年前。所以我正要向我们不断增长的全局函数列表添加一个新函数(叹息),并注意到最后一个用户在简单的functiona(){}上使用了变量赋值。functionaFunction(){returnnull;}varbFunction=function(){returnnull;}我创建了一个test看看它是否有所作为;它确实如此,但是一个相互矛盾的。(chrome喜欢简单的函数,而firefox喜欢变量赋值)。Firefox:函数创建(

javascript - 关于 var/const,为什么这段代码会起作用?

打开开发控制台(或在node.js中),按顺序输入以下代码:a=1vara=2consta=3正如你所见,它可以工作,但是如果你一次输入所有代码,你会得到一个错误,我认为这样更合理我想唯一的区别是提升,如果你一次输入所有代码,它将被视为:varaa=1a=2consta=3但我不明白为什么当你逐行输入时它会起作用,而且如果你跳过第一行,你会得到预期的错误 最佳答案 在环境的全局范围内,无论类型如何,都可以分配和声明变量,因此当您按顺序输入以下代码时,它会起作用。z=1varz=2constz=3现在z的值为3现在假设我们一次执行所有

javascript - 为什么 let 不比 var 慢?

做一个极端的总结,thedifferencebetweenvarandlet他们的生活在一个范围内。因此,如果我们要以thisanswer中的示例为例:(function(){for(vari=0;ii(用var声明)存在于整个function中j(用let声明)只存在于for循环中。对我来说,这意味着javascript,在每次迭代之后,除了声明和分配给变量之外,在let的情况下,它还需要执行一个额外的步骤:清理j但如果我正在阅读thespecs对了,还有很多:对于var,执行以下步骤:IterationStatement:for(Expressionopt;Expressionop

javascript - 剧情 js : how to run my javascript ONLY after plot image is loaded

当通过JavascriptAPI(plotly.js,而不是plotly-nodejs)使用任何类型的plotly图表时,我如何才能在图表加载后运行一些javascript?我正在寻找plotlyjavascriptAPI中的机制,例如,在使用GoogleMapsAPI时,它与“addListenerOnce”结合“tilesloaded”或“ready”执行相同的操作。例如,假设我想在呈现https://plot.ly/~PlotBot/685处显示的示例后立即简单地显示一个警报,其html和js代码可以在https://plot.ly/~PlotBot/685.js查看.这样做的原

javascript - 为什么这个被屏蔽的 JS 代码在 GET 参数 : '*alert(13)*' executed on my page?

我们对我们的网站进行了白帽扫描,他们返回的漏洞之一是我们的URL附加了whscheck'*alert(13)*'a/。当我们运行完整的URL(https://oursite.com/phorders3/index.php/whscheck'*alert(13)*'a/)时,网站会加载并发出带有值的警报13流行音乐。谁能解释这是如何工作的?星号和a/到底在做什么? 最佳答案 您页面中的代码在Javascript的字符串文字中使用URL中的值,而没有正确转义该值。这意味着任何人都可以将Javascript放在URL中,它就会在页面中执行

JavaScript 本地作用域 : var vs. this

我似乎无法理解JavaScript变量作用域的特定情况。与我发现的其他示例和问题不同,我对嵌套函数的范围界定很感兴趣。我在thisJSFiddle设置了一个示例.相关部分如下:functionMyObject(){varself=this;vara=1;this.b=2;varinnerMethod=function(){//1and2:directreferencelogMessage("a="+a);//a=1//logMessage("b="+b);//Error:bisnotdefined//3and4:usingthislogMessage("this.a="+this.a)

javascript - try/catch 表达式中的 var 关键字 : JSLint bug or global assignment?

我注意到JSLint的一个有趣结果在研究codereview题。JSLint提示变量在定义之前被使用。这是生成相同结果的代码的缩短版本:(function(){try{vara=0;throw{name:"fakeError"};}catch(e){a=1;}}());我对JavaScript的理解是上面的代码应该等同于:(function(){vara;try{a=0;throw{name:"fakeError"};}catch(e){a=1;}}());事实上,当通过Firebug运行时,这两个示例都不会导致a存在于全局范围内。我看了一下ECMA-262spec的第12.14节,但

javascript - 在嵌套函数中使用 var 声明一个与 parent 参数同名的变量

我正在使用JavaScript编写一些代码并发现了意外行为。我在f中使用嵌套函数g。f有一个名为m的参数。在g中使用和声明同名变量时,会发生一些奇怪的事情:varf=function(m){varg=function(){alert(m);varm=0;};g();};f(1);此代码将导致undefined,而不是我预期的1。将alert语句移动到var行下方会得到有意义的答案0。我想这是因为JavaScript仅将函数用作名称闭包,varm将通过声明附加到函数g,但是m在alert时尚未分配。但我不确定这一点,因为如果函数没有嵌套,我觉得它的行为很好:varg=function(m