python vs javascript_Python“是”vs JavaScript===

Python部分SO can you have two different instances of (say) a string of "Bob" and

have them not return true when compared using 'is'? Or is it infact

the same as ===?a = "Bob"

b = "{}".format("Bob")

print a, b

print a is b, a == b

输出Bob Bob

False True

另一个例子print 3 is 2+1

print 300 is 200+100

输出True

False

这是因为Python中的小int(-5到256)是在内部缓存的。因此,无论何时在程序中使用它们,都会使用缓存的整数。因此,is将为它们返回True。但是如果我们选择更大的数字,就像在第二个例子中,(300 is 200+100)则不是真的,因为它们没有被缓存。

结论:

只有当被比较的对象是相同的对象时,is才会返回True,这意味着它们指向内存中的相同位置。(它完全依赖于python实现来缓存/实习生对象。在这种情况下,is将返回True)

经验法则:

切勿使用is运算符检查两个对象是否具有相同的值。

JavaScript部分

问题的另一部分是关于===运算符。让我们看看这个操作符是如何工作的。If Type(x) is different from Type(y), return false.

If Type(x) is Undefined, return true.

If Type(x) is Null, return true.

If Type(x) is Number, then

If x is NaN, return false.

If y is NaN, return false.

If x is the same Number value as y, return true.

If x is +0 and y is −0, return true.

If x is −0 and y is +0, return true.

Return false.

If Type(x) is String, then return true if x and y are exactly the

same sequence of characters (same length and same characters in

corresponding positions); otherwise, return false.

If Type(x) is Boolean, return true if x and y are both true or both

false; otherwise, return false.

Return true if x and y refer to the same object. Otherwise, return

false.

最后结论

我们不能比较Python的is运算符和JavaScript的===运算符,因为Python的is运算符只做严格相等比较算法中的最后一项。7. Return true if x and y refer to the same object. Otherwise, return false.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值