我有一个function,设置如下 function mainFunction() { function subFunction() { var str = "foo"; return str; } } var test = mainFunction(); alert(test); 根据我的逻辑,这个警报应该返回'foo',而是返回undefined。 我究竟做错了什么? 更新 :这里是我的实际代码(这是一个用Google API进行反向地理编码的function) function reverseGeocode(latitude,longitude){ var address = ""; var country = ""; var countrycode = ""; var locality = ""; var geocoder = new GClientGeocoder(); var latlng = new GLatLng(latitude, longitude); return […]
def maker(n): def action(x): return x ** n return action f = maker(2) print(f) print(f(3)) print(f(4)) g = maker(3) print(g(3)) print(f(3)) # still remembers 2 为什么嵌套函数会记住第一个值2即使maker()已经返回并在调用action()的时候退出?
所以我们在PHP中获得了这个function strcmp(string $1,string $2) // returns -1,0, or 1; 我们不要,但是有一个intcmp(); 所以我创造了一个: function intcmp($a,$b) { if((int)$a == (int)$b)return 0; if((int)$a > (int)$b)return 1; if((int)$a < (int)$b)return -1; } 这只是感觉肮脏。 你们都在想什么? 这是通过传入的sorting值对JavaScript进行sorting的类的一部分。 class JS { // array('order'=>0,'path'=>'/js/somefile.js','attr'=>array()); public $javascripts = array(); … public function __toString() { uasort($this->javascripts,array($this,'sortScripts')); return $this->render(); } private function sortScripts($a,$b) { if((int)$a['order'] == (int)$b['order']) […]
我只看了sleep()文档sleep() 。 你会在哪里使用这个function? 是否有一个昂贵的function让CPUrest? 任何常见的陷阱?
在C#中,你可以这样做: foo = string.Format("{0} {1} {2} {3} …", "aa", "bb", "cc" …); 这个方法Format()接受无限的参数,是第一个如何格式化string,其余的是要放入string的值。 今天我遇到了一个情况:我必须得到一组string并testing它们,然后我记得这个语言的function,但是我没有任何线索。 经过几次不成功的网页search之后,我意识到只要获得一个数组,这样做并不令我满意。 问:我如何制作一个接受无限参数的函数? 我该如何使用它?
C ++中命名函数的约定是什么? 我来自Java环境,所以我通常是这样命名的: myFunction(…) { } 我看过C ++中的混合代码, myFunction(….) MyFunction(….) Myfunction(….) 什么是正确的方法? 另外,类方法和非类方法是一样的吗?
我的一个朋友在一些Javascript代码中发现了一些有趣的行为,我决定进一步调查。 比较 (function (x) {return x*x;}) > [1,2,3] 在大多数主stream浏览器(Firefox,Chrome,Opera和Safari)中返回true ,在IE9中返回false 。 对我来说,这个比较没有任何逻辑结果,因为没有办法说函数大于数组。 在ECMA脚本标准中读到这一点,它说在对象上使用时的实际参数是对参数调用ToNumber内部操作的结果。 一些实验和进一步的阅读告诉我,这与应用(Number) arg类的types转换不同。 阅读规范,我很难弄清楚这里发生了什么。 任何人都可以填写我在这里发生了什么?
是否有一个很好的简单的方法来延迟函数调用,同时让线程继续执行? 例如 public void foo() { // Do stuff! // Delayed call to bar() after x number of ms // Do more Stuff } public void bar() { // Only execute once foo has finished } 我知道这可以通过使用计时器和事件处理程序来实现,但我想知道是否有一个标准的C#方法来实现这一目标? 如果有人好奇,这是必须的原因是foo()和bar()是在不同的(单例)类,我需要在特殊情况下相互调用。 问题是,这是在初始化完成,所以foo需要调用bar需要正在创build的foo类的实例…因此,延迟调用bar(),以确保foo完全instanciated ..读这回几乎是糟糕的devise! 编辑 我会在劝告下采取不良devise的观点! 我一直认为我可以改进这个系统,但是,这种恶劣的情况只发生在抛出exception的情况下,在其他时候这两个单例并存非常好。 我认为我不会讨厌讨厌的asynchronous模式,而是要重构其中一个类的初始化。
从ES2015(ES6)开始,函数具有正确的名称(包括正式name属性),除了明显的函数声明和已命名的函数expression式(如赋值给variables(函数名称设置为variables的名称),赋值给对象属性(函数名称设置为属性名称),甚至函数参数(函数名称设置为参数名称)的默认值。 但是,分配给现有对象的属性(例如,不在对象初始值设定项中)不会将该属性的名称分配给该函数。 为什么不? 当然,一定有一个特定的原因是不可取的。 它以前如何? 要明确:我不是问如何解决这个问题。 我问的是什么阻止了这个看似明显的情况下被处理的时候,还有很多其他的(包括默认参数值!)。 一定有一个很好的理由。 请不要推测或理论。 TC39有理由不包括在内。 我对这个原因感兴趣。 我已经通过TC39会议笔记,但还没有find它。 我迄今发现的最接近的是艾伦· 维尔夫斯 ·布洛克(Allen Wirfs-Brock) 回答贝吉(Bergi)说,由于“各种各样的反对意见”,没有就这种forms达成共识。但遗憾的是,他没有说出那些反对意见是什么。 细节: 以下所有将名称foo分配给兼容浏览器上的function: // Requires a compliant browser // Assigning to a variable or constant… // …whether in the initializer… { let foo = function() { }; console.log("1:", foo.name); // "foo" } { const foo = function() { }; […]
鉴于以下function: def foo(a, b, c): pass 如何获得传入的参数的列表/元组/字典/等, 而不必自己构build结构 ? 具体来说,我正在寻找Python的JavaScript的arguments关键字或PHP的func_get_args()方法的版本。 我不在寻找的是使用*args或**kwargs的解决scheme; 我需要在函数定义中指定参数名称(以确保它们被传入),但是在函数中,我希望在列表或字典式结构中使用它们。