return 'Yes'的奇怪实现,'No'而不是javascript中的true,false
A strange implementation of return 'Yes', 'No' instead of true, false in javascript
最近,我看到了这个
的替代实现
function boolToWord( bool ){
return bool ? "yes" : "no" ;
}
至此
function boolToWord( bool ){
return ['No','Yes'][+bool];
}
我可以澄清一下 ['No','Yes'][+bool];
在做什么吗?我只知道 +bool
只是根据布尔值将布尔值变成 0 或 1。但是它如何将它用作 select 前一个数组 ['No', 'Yes']
的值的索引?这是仅 javascript 的功能吗?这个叫什么?谢谢。
['No', 'Yes']
是一个数组字面量,和任何其他数组一样,它可以通过索引访问。如您所述,一旦 bool
转换为 0
或 1
的整数,就会访问数组元素。请注意,Javascript 中的数组是从零开始的,因此数组的第一个元素的索引为 0
,第二个元素的索引为 1
.
['No', 'Yes']
是一个数组。在索引 0 下有 No
,在索引 1 下有 Yes
。当您使用 +bool
时,它会将此布尔值转换为数字:
+false === 0
+true === 1
所以 +bool
你将收到 0
或 1
,并从数组中选择相应的值
['No','Yes'] 是一个数组,我们将访问索引 0 或 1,对应于 false 或 true。
当我们在 bool 上使用 + 运算符时,例如+bool
我们正在转换为 0 或 1 的整数;
下面是一个更详细的boolToWord版本,记录中间值,不用于生产,只是为了说明原理:
function boolToWord( bool ) {
let index = +bool;
let array = ['No','Yes'];
console.log(`Bool: ${bool}, array index: ${index}, array:`, array );
let result = array[index];
console.log("Result:", result);
return result;
}
boolToWord(false);
boolToWord(true);
+false、+true 的日志输出:
console.log("+false = ",+false);
console.log("+true = ",+true);
最近,我看到了这个
的替代实现function boolToWord( bool ){
return bool ? "yes" : "no" ;
}
至此
function boolToWord( bool ){
return ['No','Yes'][+bool];
}
我可以澄清一下 ['No','Yes'][+bool];
在做什么吗?我只知道 +bool
只是根据布尔值将布尔值变成 0 或 1。但是它如何将它用作 select 前一个数组 ['No', 'Yes']
的值的索引?这是仅 javascript 的功能吗?这个叫什么?谢谢。
['No', 'Yes']
是一个数组字面量,和任何其他数组一样,它可以通过索引访问。如您所述,一旦 bool
转换为 0
或 1
的整数,就会访问数组元素。请注意,Javascript 中的数组是从零开始的,因此数组的第一个元素的索引为 0
,第二个元素的索引为 1
.
['No', 'Yes']
是一个数组。在索引 0 下有 No
,在索引 1 下有 Yes
。当您使用 +bool
时,它会将此布尔值转换为数字:
+false === 0
+true === 1
所以 +bool
你将收到 0
或 1
,并从数组中选择相应的值
['No','Yes'] 是一个数组,我们将访问索引 0 或 1,对应于 false 或 true。
当我们在 bool 上使用 + 运算符时,例如+bool
我们正在转换为 0 或 1 的整数;
下面是一个更详细的boolToWord版本,记录中间值,不用于生产,只是为了说明原理:
function boolToWord( bool ) {
let index = +bool;
let array = ['No','Yes'];
console.log(`Bool: ${bool}, array index: ${index}, array:`, array );
let result = array[index];
console.log("Result:", result);
return result;
}
boolToWord(false);
boolToWord(true);
+false、+true 的日志输出:
console.log("+false = ",+false);
console.log("+true = ",+true);