2015-01-14 4 views
2

JavaScript로 작업하는 비트이며 작업하는 동안 매우 이상한 경우가 발생했습니다. 시간이 조금 지나면 프로젝트에서 수정되었지만 또한 복제합니다.개행과 자바 스크립트의 문자열 연결에 미치는 영향

문제는 연결을 통해 여러 줄의 문자열 구문 분석과 관련됩니다.

내 테스트 케이스는 다음

> var a = "s1" 
undefined 
> var b = "s2" 
undefined 
> a + b 
's1s2' 
> a+ 
... +b 
's1NaN' 
> a++b 
SyntaxError: Unexpected identifier 

(제는 기본적 + 사이 개행 단일 명령, ++ B를이다 + b).

두 번째 테스트 케이스가 세 번째 테스트 케이스와 정확히 일치해야하지 않습니까? Chrome 39와 Firefox 34 모두에서 이러한 현상이 발생합니다.

표준을 따르는 동작입니까? 내가 생각지 못하는 너무나 명백한 것을 놓치고 있는가?

+1

번째 경우 실패하면 + + b' (≠의'++의 b') '와 동일하다. 이는 표준적인 동작입니다. 정말로 세미콜론을 사용해야합니다. – Bergi

+0

나는 일반적으로하고 나는 완전히 동의한다. 내 프로젝트에서이 줄은 매우 긴 문자열 연결 이었기 때문에 유일한 예외였습니다. 두 줄에서이 작업을 수행했습니다. :) – funforums

+0

하지만 단 하나의'+'만 사용해야 할 것입니다. 어떤 선에 놓여 있든지 관계 없습니다. – Bergi

답변

2
a+ 
+b 

실제로 b 때문에

a + (+b) 

로 취급하는 것은 수없고, b의 수치는 단항 연산자 + 의해 NaN로 주어진다.

마지막 사례 인 a++b의 경우는 (a++)b으로 평가됩니다. JavaScript가 ++ 연산자 후 것을 기대하지 않기 때문에, 그것은 오류

SyntaxError: Unexpected identifier 
+0

문제는 단항 플러스를 지금까지 사용하지 않았다는 것입니다. 내 배경은 자바 배경입니다. 독자들을위한 참고서로서 단항 플러스에 대한 설명을 남겨 두겠습니다 : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Unary_plus 사실 자바 스크립트에서는 개행 문자가 무시되지 않습니다. :) – funforums