채택완료

스크립트 function 질문입니다.

2018-04-02 (월) 12:39:19 2,421
Copy
function Test ($aaa, $bbb = null) {

~~~

}

여기서 인자값 $bbb = null

이렇게 하면 에러인가요?

이렇게하니깐 크롬에서는 되는데 익스에서는 에러라고 뜨네요..

PHP에서는 이거 맞는거잖아요..

|

답변 2개 / 댓글 2개

채택된 답변
+20 포인트

php 문법과 javascript 문법이 비슷한 부분이 있기는 하지만,

전부 같지는 않습니다.

php 에서는 파라미터의 기본값을 줄 수 있는 방법이 본문의 코드와 같이 가능하지만,

javascript 에서는 지원하지 않습니다.  (ES6 default function params 지원 웹브라우저에서는 가능하다고 합니다.)

javascript 에서 php 함수와 유사한 방식의 기본값을 주는

방법과 관련된 참고글입니다. http://blog.freezner.com/archives/818

https://appletree.or.kr/blog/web-development/javascript/javascript-function%EC%9D%98-default-parameters-%EC%84%A4%EC%A0%95-%EB%B2%95/

답변에 대한 댓글 1개

감사합니다^^!

변수명을 혼용하시는거 같아보입니다.

IE , 크롬에서 보신다고 하는것으로 보아

JavaScript를 말씀하시는거죠?

물론 $변수를 사용할수있습니다만

PHP의 $와 다릅니다.

그리고,

function Test($aaa, $bb = null ) {

}

와 같이 사용할경우는 없습니다.

JavaScript에서 값이 없는것은 null이 아닌

undefined 입니다.

따라서 굳이 null로 넣지 안않아도 그 자체가 undefined 가 되서

null로 체크됩니다.

이런 이유와 마찬가지로 IE에서는 넣을수 없는값으로 인식되는것으로 보여집니다.

크롬/파이어폭스에서는 

http://beomy.tistory.com/17

아래의 내용에따라

null을 인자로 전달할경우 null 자체가 의미하는 null로 인식해서 처리합니다.

은 

값을 1개만 전달하기도 2개를 전달하기도 하는경우에는

function Test($aaa, $bb ) {

}

으로 처리하시면 정상적으로 처리되실겁니다.

답변에 대한 댓글 1개

감사합니다 !!

답변을 작성하려면 로그인이 필요합니다.