编辑:由于我的误解,这个问题被问到了.请谨慎行事,因为阅读它可能会浪费您的时间.
我想call
并且apply
会在给定一组参数的情况下执行函数,但是我的测试结果令人困惑.看我的测试代码:
window.z = 0;
(function(){++(window.z)}).call(this, 1, 2, 3)
Run Code Online (Sandbox Code Playgroud)
我希望z
在执行后会是3.但是,z是1.
(function(){++(window.z)}).apply(this, [1, 2, 3])
Run Code Online (Sandbox Code Playgroud)
同样在这里.z == 1;
我也试过简单地记录输入参数:
var x = function(y){console.log(y);}
x.call(this, 1, 2, 3);
Run Code Online (Sandbox Code Playgroud)
结果?仅记录1.
我在这做错了什么?
(使用Firebug在Chrome和Firefox中测试过.)
是否有任何理由说明Any
以下代码中的函数可能会失败?
var orders = db.Order.Where(order => order.Item.Any());
foreach (var order in orders)
{
var first = order.Item.First(); // NullReferenceException thrown here: order.Item == null
}
Run Code Online (Sandbox Code Playgroud)
也许我只是在这里误解了一些东西,但在我看来,order.Item
由于之前的Any
陈述,我永远不应该是空的.
编辑:如果我确保表达式被评估而不是通过放置ToList
那个延迟,我得到另一个异常,因为order.Item
序列没有项目,这也让我感到困惑:
var orders = db.Order.Where(order => order.Item.Any()).ToList();
foreach (var order in orders)
{
var first = order.Item.First(); // System.InvalidOperationException thrown here: order.Item.Count == 0
}
Run Code Online (Sandbox Code Playgroud) 在创建闭包时(在Javascript或C#中),闭包创建时范围内的所有变量是否"封闭"在其中?或者只是新创建的方法中引用的变量?
示例C#代码:
private void Main() {
var referenced = 1;
var notReferenced = 2; // Will this be enclosed?
new int[1].Select(x => referenced);
}
Run Code Online (Sandbox Code Playgroud)
示例Javascript代码:
var referenced = 1;
var notReferenced = 2; // Will this be enclosed?
var func = function () {
alert(referenced);
}
Run Code Online (Sandbox Code Playgroud)
(通过使用Javascript闭包创建循环引用来阅读IE中的内存泄漏时,问题来了.http
://jibbering.com/faq/notes/closures/#clMem)注意:带有"封闭"一词,我的意思是MSDN会叫"被抓".(http://msdn.microsoft.com/en-us/library/bb397687.aspx)
我正在尝试找出如何删除电子邮件地址中的所有无效字符.
例如:email ="taeo͝'; st@yy.com"(.是电子邮件字符),结果应为:email ="taest@yy.com"
我使用以下电子邮件模式:
String email_pattern = "^[^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"+ "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$]";
String modifiedEmail = email.replaceAll(email_pattern,"");
Run Code Online (Sandbox Code Playgroud)
但上面的代码给出了结果:email ="aest@yy.com",但预计"taest@yy.com"
任何建议或更好的方法将不胜感激.
我正在开发具有许多内容脚本的Chrome扩展程序。它们大多数使用相同的功能,因此我想在内容脚本之间共享这些功能。但是我似乎不知道该怎么做。
内容脚本是沙盒化的,因此无法访问同一window
对象。似乎应该有一个明显的解决方案,但我一直找不到。
为什么这个带有布尔值的变量赋值失败?
$result = 1 == 2;
Run Code Online (Sandbox Code Playgroud)
结果:$ result为空.(期待false
.)
我甚至试过这个:
$result = 1 == 2 ? true : false;
Run Code Online (Sandbox Code Playgroud)
结果:$ result为空.
这在PHP中是不可能的吗?
编辑以供将来参考:$result
事实上false
在两种情况下; 我只是假设不然,因为我通过"回声"来检查它的价值.(看评论.)