为什么是真的? 'false':'true'返回'true'?

时间:2011-04-08 06:10:33

标签: javascript

为什么我这样做

(!true) ? 'false' : 'true'

它返回'true'

8 个答案:

答案 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')
 }