小编Pet*_*son的帖子

如何在Javascript中打破非矛盾的规律?

不矛盾法则规定,两个相互矛盾的陈述不能同时成立.这意味着表达式

(a && !a)
(a == !a)
(a === !a)
Run Code Online (Sandbox Code Playgroud)

应该总是评估一个虚假的价值,并且

(a || !a)
Run Code Online (Sandbox Code Playgroud)

应始终评估为真实价值.

幸运的是,Javascript是一种有趣的语言,可以让你做 各种各样的 生病.我打赌一个小小的财富,有可能说服Javascript打破非矛盾的法则,或者至少令人信服地让它看起来像是违反了不矛盾的法则.现在我试图让上面的所有四个代码示例都给出意想不到的结果.

有什么好办法可以解决这个问题?

javascript logic

12
推荐指数
1
解决办法
315
查看次数

为什么F#有一元加运算符?

有些语言使用一元加运算符进行隐式转换,例如将字符串强制转换为数字(例如Javascript)或将小数字类型转换为int(例如大多数基于C的语言),或者在重载运算符时使用.

由于一元加号主要用于这样的hackish目的,而且由于F#不执行自动扩展转换,我很惊讶F#包括一元加号.

令我惊讶的是,Haskell没有一元加运算符.由于F#设计受到Haskell的影响,我很好奇为什么当Haskell显然不支持F#需要一元加时.

你能举例说明F#中一元加的可靠用法吗?如果你不能,为什么它包含在语言中呢?

f# unary-operator

12
推荐指数
1
解决办法
1151
查看次数

哪些对象有资格进行垃圾回收?

这是我最近在采访中被问到的一个问题:在"GC.Collect()"调用期间会收集哪些"随机"对象?

String a = new Random().Next(0, 1) ==1 ? "Whatever 1" : "Whatever 2";

String b = new WeakReference(new Random()).Target.Next(0, 1) == 1 ?
    "Whatever 1" : "Whatever 2";

GC.Collect();
Run Code Online (Sandbox Code Playgroud)

我回答说这是一个特定于实现的问题,它高度依赖于GC实现和相应的弱引用语义.据我所知,C#规范没有提供GC.Collect应该做什么以及如何处理弱引用的准确描述.

但是,我的采访者想听别的.

c# garbage-collection weak-references

12
推荐指数
2
解决办法
555
查看次数

选项类型和可空类型之间有什么区别?

在F#mantra中,似乎有一种内心的避免null,Nullable<T>以及它的同类.作为交换,我们应该使用选项类型.说实话,我并没有真正看到差异.

  • 我对F#选项类型的理解是它允许您指定一个可以包含其任何正常值的类型,或者None.例如,除了之外,还Option<int>允许所有int可以拥有的值None.

  • 我对C#可空类型的理解是它允许你指定一个可以包含任何正常值的类型,或者null.例如,Nullable<int>又名int?允许所有的值的int可具有,除了null.

有什么不同?用NullableOption,做一些词汇替换,null并且None,你基本上有相同的东西.有什么大惊小怪的null

null f#

12
推荐指数
3
解决办法
1696
查看次数

为什么[1,2,3]在Javascript中不等于它自己?

我今天在Javascript中玩数组并注意到这个小宝石:

alert([1, 2, 3] == [1, 2, 3]); //alerts false
Run Code Online (Sandbox Code Playgroud)

令我感到奇怪的是阵列不等于它自己.

但后来我注意到了这一点,甚至更奇怪了:

alert([1, 2, 3] == "1,2,3");  //alerts true
Run Code Online (Sandbox Code Playgroud)

?!?!?!?!?

世界上为什么[1, 2, 3]不是==自己而是==弦乐?

我认识到,==不一样===.即便如此,邪恶可能会导致Javascript先生做出如此奇怪的事情?

javascript

11
推荐指数
2
解决办法
3217
查看次数

JSLint支持If-Block

在Javascript中,如果if表达式后面没有大括号,则将以下语句放入if块中.那是,

if(foo)
bar();
baz();
Run Code Online (Sandbox Code Playgroud)

相当于

if(foo) {
  bar();
}
baz();
Run Code Online (Sandbox Code Playgroud)

道格拉斯·克罗克福德建议不要使用第一个,因为如果程序员试图在if没有括号的情况下向一个块添加语句,那么它会让人感到困惑并且可能导致难以追踪的错误.出于这个原因,JsLint抱怨你是否使用第一个表格.

我一直都在使用它,如果你把语句与语句放在同一行,我认为这是一个非问题if,如下所示:

if(foo) bar();
baz();
Run Code Online (Sandbox Code Playgroud)

这在视觉上比完整的支架形式更简洁,我从来没有与它混淆.就这样我可以通过JsLint并且没有那么多的视觉噪音我有时会使用一种依赖于操作员短路的较少惯用的形式,如下所示:

foo && bar();
baz();
Run Code Online (Sandbox Code Playgroud)

你可能都在等我快点问一个问题,所以这就是: 如果你正确地格式化,在一行条件语句中不使用大括号通常被认为是不好的做法吗?为什么?JsLint有没有合理的理由抱怨它?

javascript jslint

10
推荐指数
2
解决办法
5592
查看次数

如何在TypeScript中注释递归类型?

如果我有这样的功能:

function say(message: string) {
    alert(message);
    return say;
}
Run Code Online (Sandbox Code Playgroud)

它有一个有趣的属性,我可以链接调用它:

say("Hello,")("how")("are")("you?");
Run Code Online (Sandbox Code Playgroud)

如果我将数字传递给第一个调用,编译器将生成警告,但它允许我将数字放入后续调用中.

say("Hello")(1)(2)(3)(4)
Run Code Online (Sandbox Code Playgroud)

say当我将无效类型传递给链式调用时,我需要向函数添加什么类型的注释以使编译器生成警告?

types typescript

10
推荐指数
1
解决办法
2030
查看次数

Jquery - Action会触发任何事件

在jquery中有什么东西可以在触发任何事件时触发函数吗?

我想要这样的事情:

$("*").anyEvent(function(){
  $("#error").html("");
});
Run Code Online (Sandbox Code Playgroud)

javascript jquery

9
推荐指数
1
解决办法
1万
查看次数

Javascript查找传递给函数的参数

我需要找到从函数传递给函数的参数.

让我们假设我有一个叫做的函数foo:

function foo() {
  var a = 3;
  var b = "hello";
  var c = [0,4];
  bar(a - b / c);
  bar(c * a + b);
}

function bar(arg) { alert(arg) }
Run Code Online (Sandbox Code Playgroud)

当然,现在,它bar总会提醒NaN.

在函数内部bar,我想以最初传递的形式获取参数.此外,我希望能够访问的值a,b以及cbar功能.换句话说,我想要这样的东西:

bar(a - b / c);    

function bar() {
 //some magic code here
 alert(originalArg); //will alert "a - b / c"
 alert(vars.a + " " + vars.b + " " …
Run Code Online (Sandbox Code Playgroud)

javascript argument-passing

9
推荐指数
2
解决办法
635
查看次数

如何创建一个函数来计算带小数的数字的阶乘?

如何在JavaScript 中创建计算十进制数的阶乘(或伽玛函数)的函数?例如,我该如何计算2.33!

javascript math factorial gamma-function

9
推荐指数
2
解决办法
3202
查看次数