为什么我这样做
(!true) ? 'false' : 'true'
它返回'true'
?
答案 0 :(得分:62)
这只是意味着
if (!true) {
return 'false';
} else {
return 'true';
}
!true
(不是)表示false
,因此会返回else
。
答案 1 :(得分:21)
A ? B : C
的语法意味着如果A为TRUE,则返回值B. Else返回值C.由于A是FALSE
,它返回的值C恰好是{{1 }}
答案 2 :(得分:20)
因为(!true)
为false,然后选择了:
的右侧。
答案 3 :(得分:17)
因为上述内容相当于:
if (false) {
return 'false';
} else {
return 'true';
}
虽然可能混淆来自于:
之间的区别if (false) // which is false
和
if (false == false) // which is true
答案 4 :(得分:7)
这可以扩展为:
if(!true){
return 'false';
} else {
return 'true';
}
答案 5 :(得分:1)
if(!true)
相当于if(!true= true)
,相当于if(false=true)
false
。因此return (true)
位于if
语句的错误一边。
答案 6 :(得分:1)
由于使用字符串文字来表示布尔值,因此存在混淆。如果您反转'false'
和'true'
,则更有意义:
(!true) ? 'true' : 'false'
会返回字符串文字false
,这与boolean
值大不相同。
您的原始陈述(!true) ? 'false' : 'true'
读为
“如果不是,则返回字符串文字true”。
我首先发布的声明为
“如果不是,则返回字符串文字false”。
如果您知道 true 的相反(不)值是 false ,那么它会解释所说明的逻辑。
答案 7 :(得分:0)
; multi-segment executable file template.
data segment
firstpage db "learning Vowel letters e,o,a,i,u",10,13,"create by:alex",10,13,"1.stady",10,13,"2.exam",10,13,"3.exit" ,10,13,"$"
std1 db "Umbrella ----> an Umbrella" ,10,13,"$"
std2 db "bird ----> a bird ",10,13,"$"
std3 db "Ice cream ----> an Ice cream",10,13," $"
std4 db "car----> a car ",10,13,"$"
std5 db "Orange ---->an Orange",10,13," $"
qone db "desk ____ desk" ,10,13,"a) a",10,13,"b) an",10,13,"$"
qtow db "apple ____apple" ,10,13,"a) a",10,13,"b) an",10,13,"$"
qth db "table ____ table" ,10,13,"a) a",10,13,"b) an",10,13,"$"
qfo db "egg ____ egg" ,10,13,"a) a",10,13,"b) an",10,13,"$"
qfi db "red ____ red" ,10,13,"a) a",10,13,"b) an",10,13,"$"
nl db 0,10,13,"$"
markze db "your mark is :0$"
markone db "your mark is :10$"
marktow db "your mark is :40$"
markth db "your mark is :60$"
markfo db "your mark is :80$"
markfi db "your mark is :100$"
count db 0
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
mov ax, data
mov ds, ax
lea dx, firstpage
mov ah, 9
int 21h
mov ah,7
int 21h
mov dl,al
cmp dl,"1"
je t1
cmp dl,"2"
je t2
cmp dl,"3"
je soof
t1: mov ax,3
int 10h
lea dx,std1
mov ah,9
int 21h
mov ah,7
int 21h
lea dx,std2
mov ah ,9
int 21h
mov ah,7
int 21h
lea dx,std3
mov ah,9
int 21h
mov ah,7
int 21h
lea dx,std4
mov ah,9
int 21h
mov ah,7
int 21h
lea dx,std5
mov ah,9
int 21h
mov ah,7
int 21h
lea dx, firstpage
mov ah, 9
int 21h
mov ah,7
int 21h
t2: mov ax,3
int 10h
lea dx ,qone
mov ah,9
int 21h
lea dx,nl
mov ah,9
int 21h
mov ah,1
int 21h
mov ah,7
int 21h
mov bl,ah
cmp bl,"a"
je c1
cmp bl,"b"
je c0
lea dx ,qtow
mov ah,9
int 21h
lea dx,nl
mov ah,9
int 21h
mov ah,1
int 21h
mov bl,ah
cmp bl,"b"
je c2
cmp bl,"a"
je c0
lea dx ,qth
mov ah,9
int 21h
lea dx,nl
mov ah,9
int 21h
mov ah,1
int 21h
mov bl,ah
cmp bl,"a"
je c3
cmp bl,"b"
je c0
lea dx ,qfo
mov ah,9
int 21h
lea dx,nl
mov ah,9
int 21h
mov ah,1
int 21h
mov bl,ah
cmp bl,"b"
je c4
cmp bl,"a"
je c0
lea dx ,qfi
mov ah,9
int 21h
lea dx,nl
mov ah,9
int 21h
mov ah,1
int 21h
mov bl,ah
cmp bl,"a"
je c5
cmp bl,"b"
je c0
c0:
cmp count,0
je mark0
c1:
cmp count,1
je mark1
c2:
cmp count, 2
je mark2
c3:
cmp count, 3
je mark3
c4:
cmp count,4
je mark4
c5:
cmp count,5
je mark5
mark0:
lea dx,markze
mov ah,9
int 21h
jmp soof
mark1:
lea dx,markone
mov ah,9
int 21h
jmp soof
mark2:
lea dx,marktow
mov ah,9
int 21h
jmp soof
mark3:
lea dx,markth
mov ah,9
int 21h
jmp soof
mark4:
lea dx,markfo
mov ah,9
int 21h
jmp soof
mark5:
lea dx,markfi
mov ah,9
int 21h
jmp soof
soof: mov ax, 4c00h
int 21h
ends
end start
const test = true; // change this value to see the result change
if (!test) { // if test is NOT truthy
console.log('false')
} else { // if test === true
console.log('true')
}