JavaScript에서 = + _ 연산자가 무엇을 의미 하는지 궁금합니다 . 과제를 수행하는 것처럼 보입니다.
예:
hexbin.radius = function(_) {
if (!arguments.length)
return r;
r = +_;
dx = r * 2 * Math.sin(Math.PI / 3);
dy = r * 1.5;
return hexbin;
};
x= +_+ 0;
JavaScript에서 = + _ 연산자가 무엇을 의미 하는지 궁금합니다 . 과제를 수행하는 것처럼 보입니다.
예:
hexbin.radius = function(_) {
if (!arguments.length)
return r;
r = +_;
dx = r * 2 * Math.sin(Math.PI / 3);
dy = r * 1.5;
return hexbin;
};
x= +_+ 0;
답변:
r = +_;
+_숫자에 관계없이 캐스팅하려고합니다 ._변수 이름 만 (연산자가 아님) a, foo등 이 될 수 있습니다 .예:
+"1"
"1"을 순수한 숫자 1로 캐스트하십시오.
var _ = "1";
var r = +_;
r지금 1은 아닙니다 "1".
단항 더하기 연산자는 피연산자 앞에 오며 피연산자로 평가되지만 숫자가 아닌 경우에는 피연산자 로 변환하려고 시도합니다 . [...] 는 정수와 플로트 문자열 표현뿐만 아니라 문자열이 아닌 값을 변환 할 수있는
true,false그리고null. 10 진수 및 16 진수 (-"0x"접두사) 형식의 정수 가 지원됩니다. 음수가 지원됩니다 (16 진수는 아님). 특정 값을 구문 분석 할 수 없으면로 평가됩니다NaN.
또한 주목된다
단항 플러스는 무언가를 숫자로 변환하는 가장 빠르고 선호되는 방법입니다
+_정말로을 의미 합니까? 0+_이 경우 _0에 추가하기 전에 캐스트해야합니까?
+'12' === 12(결과는 숫자)가 아니라 0 + '12' === '012'(결과는 문자열입니다). 그러나 0 - '12' === -12.
=+실제로 이 개 운영하는 =할당하고 +및 _변수 이름입니다.
처럼:
i = + 5;
or
j = + i;
or
i = + _;
다음 코드는 문자열 을 int=+ 로 변환하는 사용법을 보여 줍니다 .
예:
y = +'5'
x = y +5
alert(x);
출력 10
사용 : 그렇지 않으면 여기 y에 int 5가 =+
있습니다.
y = '5'
x = y +5
alert(x);
출력 55
_변수는 어디에 있습니까 ?
_ = + '5'
x = _ + 5
alert(x)
출력 10
또한,~ (string이 int string (float 가 int 로 반올림 됨 ) 인 경우
와 동일한 결과를 얻을 수 있다는 것을 알고 흥미로울 것입니다 )
y = ~~'5' // notice used two time ~
x = y + 5
alert(x);
또한 출력 10
~비트 단위 NOT : 피연산자의 비트를 반전시킵니다. 나는 크기의 변화없이 두 번했다.
x|0double을 int로 변환 하는 데 자주 사용합니다 . 그러나 '~'를 사용하는 것뿐만 아니라 숫자 <2 ^ 32로 제한하는 처벌이 있습니다. + "2e15"는 그렇지 않습니다.
x|0그때 훨씬 빠르다고 생각 +합니다. 맞 습니까? 좋은 기술 :). (2) 나는 기호 만 사용할 수있는 것이 아니라 ~OP를 보여주기 +위해 사용합니다 ( 나 자신이 사용합니다+ ).
|있습니다.
비열한 것입니다.
여기서 중요한 점은 밑줄 문자 는 실제로 연산자가 아니라 변수 이름이라는 것 입니다.
그 앞에 더하기 부호는 밑줄의 양수 값을 가져옵니다. 즉 밑줄 변수를 효과적으로 int로 캐스팅합니다. 와 같은 효과를 얻을 수 parseInt()있지만 더하기 기호 더하기는 더 간결하기 때문에 여기에서 사용될 수 있습니다.
그리고 그것은 단지 등호를 표준 변수 할당으로 남겨 둡니다.
숙련 된 Javascript 프로그래머가 일반적으로 밑줄을 변수로 인식하므로 혼동하기 위해 의도적으로 작성 되지는 않았을 것입니다 . 그러나 당신이 그것을 모른다면 그것은 매우 혼란 스러울 것입니다. 나는 그것을 그렇게 쓰지 않을 것입니다. 나는 최고의 의미에서 짧은 의미없는 변수 이름의 팬이 아닙니다. 공간을 절약하기 위해 JS 코드에서 짧은 변수 이름을 원한다면 축소기를 사용하십시오. 짧은 변수로 작성하지 마십시오.
_은 변수 라는 것을 명시 적으로 지적한 유일한 사람 입니다.
_단지 AA 변수 이름, 함수의 매개 변수로 전달 hexbin.radius하고, +숫자로 캐스팅
함수와 같은 예를 만들겠습니다.
var hexbin = {},r ;
hexbin.radius = function(_) {
if (!arguments.length)
return r;
console.log( _ , typeof _ )
r = +_;
console.log( r , typeof r , isNaN(r) );
}
이 예제 함수를 실행하십시오.
hexbin.radius ( "1");
1 string
1 number false
헥스 빈 반경 (1);
1 number
1 number false
hexbin.radius ([]);
[] object
0 number false
hexbin.radius ( 'a');
a string
NaN number true
hexbin.radius ({});
Object {} object
NaN number true
hexbin.radius (true);
true boolean
1 number false
+_거의이다 상당 의 parseFloat(_). 그 관찰 parseInt반면, 도트 등의 숫자가 아닌 문자에서 중지 parshFloat하지 않습니다.
경험치 :
parseFloat(2.4) = 2.4
vs
parseInt(2.4) = 2
vs
+"2.4" = 2.4
특급 :
var _ = "3";
_ = +_;
console.log(_); // will show an integer 3
몇 가지 차이점 :
""평가 0되고 parseInt ()는로 평가됩니다.NaNparseInr(_)대신 말하고 싶어한다고 생각 parseFloat(_) 합니까?
floatparseInt는 숫자가 아닌 문자에서 멈추고 parshFloat는 멈추지 않기 때문에 의미 합니다. EXP : parseFloat(2.4) = 2.4대 parseInt(2.4) = 2.
간단히 말해 Number () 생성자 를 사용하는 +_ 것과 같습니다 .
실제로 날짜에도 작동합니다.
var d = new Date('03/27/2014');
console.log(Number(d)) // returns 1395903600000
console.log(+d) // returns 1395903600000
데모 : http://jsfiddle.net/dirtyd77/GCLjd/
자세한 정보는 MDN-단항 플러스 (+) 섹션 에서도 확인할 수 있습니다 .
단항 더하기 연산자는 피연산자 앞에 오며 피연산자로 평가되지만 숫자가 아닌 경우에는 피연산자로 변환하려고합니다. 단항 부정 (-)도 숫자가 아닌 숫자를 변환 할 수 있지만, 단항 더하기는 숫자에서 다른 연산을 수행하지 않기 때문에 무언가를 숫자로 변환하는 가장 빠르고 선호되는 방법입니다. 문자열이 아닌 값 true, false 및 null뿐만 아니라 정수 및 부동 소수점의 문자열 표현을 변환 할 수 있습니다. 10 진수 및 16 진수 ( "0x"접두사) 형식의 정수가 지원됩니다. 음수가 지원됩니다 (16 진수는 아님). 특정 값을 구문 분석 할 수 없으면 NaN으로 평가됩니다.
이 표현에서 :
r = +_;
_그렇게 처음 인 경우 "1"을 유지되지만은 r순수한 숫자가 될 것이다.숫자 변환에 +를 적용할지 여부를 고려하십시오.
+"-0" // 0, not -0
+"1" //1
+"-1" // -1
+"" // 0, in JS "" is converted to 0
+null // 0, in JS null is converted to 0
+undefined // NaN
+"yack!" // NaN
+"NaN" //NaN
+"3.14" // 3.14
var _ = "1"; +_;_ // "1"
var _ = "1"; +_;!!_ //true
var _ = "0"; +_;!!_ //true
var _ = null; +_;!!_ //false
비록 그것이 가장 빠른 숫자 변환기이지만, 전혀 사용하지 않으면 그것을 과도하게 사용하지 않는 것이 좋습니다. parseInt/parseFloat더 읽기 쉬운 대안입니다.
-->