2012-07-06 32 views
2

在检查typeof结果的两个版本之间是否有任何区别(编译器/解释器/ juju wise等)运营商?“value”== typeof X“value”中的任何差异“

我在问,因为我看到第一个版本很多次,就好像它遵循了一个概念,而第二个版本更可读,更好地描述了我的意图:主要是我对变量的类型感兴趣,而不是一个字符串与某事物相等。

更新: 虽然它不是原始问题的一部分,但值得注意的是,当您要检查平等时,x == y永远不是好的做法。你应该总是使用===操作符。

+0

看起来像是你可以用几个大的循环来尝试自己......如果这些差异很大,你会感到惊讶。 – Paddy 2012-07-06 09:55:44

+2

请改用===,==并不是真正的平等操作(它不是传递的例子,所以a == b和b == c并不意味着== c) 如果你使用=== a === b和b === a – 2012-07-06 09:56:31

回答

4

更新

有在功能方面没有任何区别,但它似乎在JavaScript中,你在任何一种方式错误(这是很好的,这要归功于JS):

Invalid left-hand side in assignment 

所以似乎只是其他编程语言开发人员的习惯。例如,在PHP如果你这样做:

if ($var = 'foo') 

PHP会静悄悄地分配foo作为价值$var但以下几点:

if ('foo' = $var) 

它会抛出一个错误。


I am asking because I see the first version a lot of times

有一个在他们所做的没有什么区别。不过第一个版本将抛出一个错误,如果你碰巧写:

'value' = typeof X 

通知=而不是=====

这通常是很好的做法,人们从其他语言有做这样的习惯在JavaScript中也是如此。

+1

秒版本之间没有区别引发相同的错误,您不能为函数或操作符调用赋值。我得到了(在第8版中)“ReferenceError:赋值中无效的左侧”for typeof {} = 5 – 2012-07-06 09:57:20

+1

是的,这是我们做了很多次的错字。 – 2012-07-06 09:58:12

+0

在php中,我使用这个'if(value == $ var)'来避免错误,因为如果我使用'='而不是'=='来引发错误,那么我可以知道错别字。所以我认为在JavaScript中它可以用于相同的原因,以避免运行时错误。 – 2012-07-06 10:11:56

0

不会有任何区别,因为等价操作会返回相同的结果,无论它是哪一轮。

+2

==不是一个等价运算符,因为等价关系需要反身性(NaN == NaN打破)和传递性(a == b和b == c并不意味着使用非严格相等的== == c) – 2012-07-06 10:00:12

相关问题