2014-09-17 4 views
1

조건이 부울 변수가 아닌 변수 인 조건문을 보았습니다. 변수는 오브젝트에 대한 것입니다.AS3 : 부울 변수가 아닌 조건문을 조건으로 사용

if (myVariable) { 
    doThis(); 
} 

myVariable이 null인지 확인하는 것처럼 보입니다. 그게 다하고있는거야? 이 좋은 프로그래밍 실천인가? 이것을하는 것이 더 좋지 않을까요?

그렇게 더 명확 해 보입니다.

+0

그것은 경우에 개체의 유형을 명시 적으로 널 (null)에 대해 확인해야 기능을 제외하고 어느 쪽이든 완전히 괜찮아요 – BotMaster

+0

@BotMaster 컴파일러가 함수를 사용하여 컴파일하면 컴파일러가 경고를받습니다. (컴파일러가 실수로()를 버렸다고 생각하기 때문입니다) 컴파일 및 작동합니다. 하지만 분명히 함수를 명시 적으로 검사하는 것이 내 의견으로는 더 확실합니다. – BadFeelingAboutThis

+0

downvote가있는 이유는 확실하지 않습니다 ... 많은 프로그래머가 당연한 것으로 여겨 질 수도 있지만, 유효한 일관성은 – BadFeelingAboutThis

답변

3

가 제대로 귀하의 질문에 대답하기 위해 : if 문이 같은 객체에 사용

를, 개체가 존재하는지 확인합니다. 객체가 null 또는 undefined 경우

그래서 그렇지 않으면 true에 해당 될 것입니다 false의 동등한 평가합니다.

"좋은 프로그래밍 실습 (good programming practice)"에 관한 한, 매우 의견을 바탕으로 한 것이지 StackOverflow에서 가장 잘 벗어났습니다.

ECMAScript 기반 언어 (예 : AS3 및 JS)에서 성능이 저하됩니다. 그러나 C#와 같이 더 엄격한 언어는 명시적인 부울 검사가 필요하므로 여러 언어로 프로그래밍하는 경우 일관성있게하는 것이 더 쉬울 수도 있습니다.

전적으로 귀하에게 달려 있습니다. 여기

당신이 고려할 수있는 몇 가지 추가 예입니다 (! myFunction이 = NULL)

var str:String; 
if(str) //will evaluate as false as str is null/undefined 

if(str = "myValue") //will evaluate true, as it will use the new assigned value of the var and you're allowed to assign values inside an if condition (though it's ugly and typically uneccessary) 

var num:Number; 

if(num) //will evaluate as false 

num = 1; 
if(num) //will evaluate as true 

num = 0; 
if(num) //will evaluate as false since num is 0 

num = -1; 
if(num) //will evaluate as true 

var obj:Object 
if(obj) //will evaluate false 

obj = {}; 
if(obj) //will evaluate true (even though the object is empty, it exists) 

var func:Function; 
if(func) //false 

func = function(){}; 
if(func) //true - the function exists 

function foo():Boolean { return false; } 
if(foo) //true - the function exists 

if(foo()) //false, the return of the function is false 

function foo1():void { return; }; 
if(foo1()) //false as there is no return type 
+0

두 번째는 할당이고 컴파일러 경고를 생성합니다. – BotMaster

+0

@botMaster 실제로. 그러나 어떤 사람들은 if 문에 할당을 사용하여 그것을 포함 시켰습니다. – BadFeelingAboutThis

0
if (myVariable) // fine but not really explicit. 

나는 일반적으로 사용

if (myVariable !== null) // more readable to me 
+0

더 읽기 쉬울 경우 부울을 위해이 작업을 수행한다고 가정합니다. if (myboolean == true) 그렇지 않으면 작거나 읽을 수 없습니다. – BotMaster