Typescript字符串与String.toLowerCase的比较奇怪

时间:2016-04-19 20:00:57

标签: javascript typescript

虽然好奇(而且没有JS背景),但我开始潜入Typescript并面对一堵砖墙。 我想比较两个字符串,为了让生活更轻松,它们将首先与小写字符对齐。这是代码:

let bool: boolean = false;
let i = 0;
this.comparisons[++i] = " init bool " + " => " + bool;

bool = false;
if ("a" == "a") { bool = true };
this.comparisons[++i] = ' "a" == "a" ' + " => " + bool;

bool = false;
if ("a" == "b") { bool = true };
this.comparisons[++i] = ' "a" == "b" ' + " => " + bool;

bool = false;
if ("a" == "A") { bool = true };
this.comparisons[++i] = ' "a" == "A" ' + " => " + bool;

bool = false;
if ("a".toLowerCase == "A".toLowerCase) { bool = true };
this.comparisons[++i] = ' "a".toLowerCase == "A".toLowerCase ' + " => " + bool;

bool = false;
if ("a".toLowerCase == "B".toLowerCase) { bool = true };
this.comparisons[++i] = ' "a".toLowerCase == "B".toLowerCase ' + " => " + bool;

并打印:

init bool => false

"a" == "a" => true

"a" == "b" => false

"a" == "A" => false

"a".toLowerCase == "A".toLowerCase => true

"a".toLowerCase == "B".toLowerCase => true

为什么最后一个表达式评估为true?

"" ==" b"应该像第三个陈述一样评估为假。

1 个答案:

答案 0 :(得分:2)

要调用方法,必须使用括号(),即使没有参数传递给方法:

bool = false;
if ("a".toLowerCase() == "B".toLowerCase()) { bool = true };

或者简单地说:

bool = ("a".toLowerCase() == "B".toLowerCase());

如果没有括号,"a".toLowerCase只是对String.toLowerCase方法本身的引用。比较的结果是true,因为它比较了两种方法并发现它们确实是相同的方法。