JavaScript 형식 & 값 & 변수
12161 단어 JavaScriptfunctionchainscope
두 값 은 거의 똑 같 습 니 다. 나 누 기 를 제외 하고:
var zero = 0; //
var negz = -0; //
zero === negz; // true
1/zero === 1/negz; // false
《 자 바스 크 립 트 권위 지침 서 》 p. 37
undefined VS null
undefined 는 변수 가 할당 되 지 않 기 전의 기본 값 으로 정의 되 지 않 았 음 을 표시 합 니 다.type: of undefined = undefined. null 은 빈 대상 참조 로 대상 이 비어 있 음 을 표시 합 니 다.type: of null = object.
문자열 길이
string. length () 는 문자 의 개수 가 아 닌 16 비트 값 을 가 진 개 수 를 되 돌려 줍 니 다.
var p = "π"; // 16 ,0x03c0
var e = "e"; // 17 ,0x1d452
p.length; // 1
e.length; // 2
《 자 바스 크 립 트 권위 지침 서 》 p. 38
포장 대상
자 바스 크 립 트 의 데이터 형식 은 원본 형식 과 대상 유형 으로 나 뉜 다.Number, String, Boolean, Null, Undefined 는 원본 형식 입 니 다.
var s = "hello world!"; // s String
var word = s.substring(2, 5); // string ,word Stirng( typeof )
문자열 이 대상 이 아 닌 이상 왜 속성 이 있 습 니까?문자열 s 의 속성 을 참조 하면 자 바스 크 립 트 는 new String (s) 방식 으로 대상 으로 변환 되 며, 속성 참조 가 끝나 면 이 새 대상 은 삭 제 됩 니 다.
var s = "test"; // String
s.len = 4; // , , s
var t = s.len; // t undefined,
var u = s.length; // u=4, string length
var s = "test"; // typeof(s) = string
var n = 1; // typeof(n) = number
var b = true; // typeof(b) = boolean
var S = new String(s); // typeof(S) = Object
var N = new Number(n); // typeof(N) = Object
var B = Boolean(b); // typeof(B) = Object
가 변 적 이지 않 은 원시 값 & 가 변 적 대상 참조
원본 값:
var s = "hello"; // string
s.toUpperCase(); // "HELLO", s
s // hello
대상 참조:
var o = { x:1 }; //
o.x = 2; //
o.y = 3; //
var a = [1,2,3]; //
a[0] = 0; //
a[3] = 4; //
var o = { x:1 }, p = { x: 1 }; // 2
o === p; // false,
var a = []; //
var b = a; // b a
b[0] = 1; //
a[0]; // 1
a === b; // true,
p. 46
명시 적 형식 변환
'+' 연산 자의 한 조작 수가 문자열 이 라면 다른 조작 수 를 문자열 로 변환 합 니 다.일원 '+' 연산 자 (또는 '연산 자) 는 그 조작 수 를 숫자 로 변환 합 니 다. 일원'!연산 자 는 그 조작 수 를 불 값 으로 바 꾸 고 반대 한다.
x + ""; // Stirng(x)
+x; // Number(x), [x - 0]
!!x; // Boolean(x),
p. 50
대상 을 원시 값 으로 변환
대상 을 문자열 로 변환
대상 을 문자열 로 변환 하 는 과정 은 다음 과 같 습 니 다.
대상 을 숫자 로 변환
대상 을 숫자 로 변환 하 는 과정 은 다음 과 같다.
대상 을 불 로 변환
대상 을 불 형식 으로 변환:
모든 날짜 가 아 닌 대상 에 게 대상 이 원래 값 으로 전환 하 는 것 은 기본적으로 대상 이 숫자 로 전환 하 는 것 (먼저 value Of () 을 호출 하 는 것) 이 고 날짜 대상 은 문자열 을 변환 하 는 모드 를 사용 합 니 다.
var bool = new Boolean(false);
alert(typeof(bool + 1)); // ,number
alert(typeof(bool - 1)); // number
alert(bool.toString()); // "false"
alert((1+bool).toString()); // 1
var now = new Date();
alert(typeof(now + 1)); // ,string
alert(typeof(now - 1)); // number
alert(now.toString()); // "Sun May 08 2016 08:57:47 GMT+0800"
alert((now + 1).toString()); // "Sun May 08 2016 08:57:47 GMT+08001"
《 자 바스 크 립 트 권위 지침 서 》 p. 52
변수 선언
함수 역할 영역 (functionscope)
C 언어 에서 괄호 안의 모든 코드 는 각자 의 역할 영역 을 가지 고 있 습 니 다. 우 리 는 블록 급 역할 영역 (block scope) 이 라 고 부 릅 니 다.한편, JavaScript 에서 함수 역할 영역 을 사 용 했 습 니 다. 함수 성명 에서 설명 한 모든 변 수 는 함수 내 에서 항상 볼 수 있 습 니 다.
function test(o) {
var i = 0; // i
if(typeof o == "object") {
var j = 0; // j
for(var k=0; k < 10; k++) { // k
console.log(k);
}
console.log(k); // 10
}
console.log(j); // j ,
}
국부 변수 와 전역 변수 가 이름 을 바 꾸 면 전역 변 수 는 국부 변수 로 덮어 씁 니 다.
var scope = "global";
function f() {
console.log(scope); // "undefined", "global"
var scope = "local"; //
console.log(scope); // "local"
}
자 바스 크 립 트 에 블록 급 작용 역 이 없 기 때문에 변수 성명 을 함수 맨 위 에 놓 을 수 있 습 니 다. 그러면 소스 코드 는 실제 변수 작용 역 을 뚜렷하게 반영 할 수 있 습 니 다.
전역 변수
전역 변 수 를 설명 할 때 실제 적 으로 전역 대상 (this) 의 속성 을 정의 합 니 다.var 를 사용 하여 전역 변 수 를 설명 할 때 이 변 수 는 설정 할 수 없 으 며 delete 연산 자 를 통 해 삭제 할 수 없습니다.var 로 설명 하지 않 으 면 이 전역 변 수 는 설정 할 수 있 습 니 다.
var truevar = 1; //
fakevar = 2; //
this.fakevar2 = 3; //
delete truevar; // false,
delete fakevar; // true,
delete fakevar2; // true,
역할 영역 체인 (scope chain)
《 자 바스 크 립 트 권위 지침 서 》 p. 56
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기초 정리 - 1문자 (String) 숫자 (Number) 불린 (Boolean) null undefined 심볼 (Symbol) 큰정수 (BigInt) 따옴표로 묶어 있어야 함 Not-A-Number - 숫자 데이터 / 숫자로 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.