데이터 유형 및 변수

데이터 유형

컴퓨터는 이름에서 알 수 있듯이 수학적 계산을 수행할 수 있는 기계입니다. 따라서 컴퓨터 프로그램은 자연스럽게 다양한 수치 값을 처리할 수 있습니다. 그러나 컴퓨터는 숫자 값 이상의 것을 처리할 수 있으며 텍스트, 그래픽, 오디오, 비디오, 웹 페이지 등과 같은 다양한 데이터도 처리할 수 있습니다. 다양한 데이터에는 다양한 데이터 유형에 대한 정의가 필요합니다. JavaScript에는 다음 데이터 유형이 정의되어 있습니다.

Number

JavaScript는 정수와 부동 소수점 숫자를 구분하지 않으며, Number로 일률적으로 표현됩니다. 숫자 유형 :

123; // 정수 1230.456; // 부동 소수점 숫자 0.4561.2345e3; // 과학적 표기법은 1234.5-99와 동일합니다. // NaN; 숫자가 아님, 결과를 계산할 수 없는 경우 NaN을 사용하여 무한대를 나타냅니다. // Infinity는 무한대를 나타냅니다. 값이 JavaScript의 숫자가 나타낼 수 있는 최대값을 초과하는 경우 Infinity

컴퓨터는 2진수를 사용하므로 때로는 16진수를 사용하여 정수를 나타내는 것이 더 편리합니다. 16진수는 0x 접두어와 0-9, a-f로 표시됩니다(예: 0xff00, 0xa5b4c3d2 등). 십진수로 표현되는 값.

Number는 네 가지 산술 연산을 직접 수행할 수 있습니다. 규칙은 수학과 일치합니다.

1 + 2; // 3(1 + 2) * 5 / 2; // 7.52 / 0; // Infinity0 / 0; // NaN10 % 3; // 110.5 % 3; // 1.5

%는 나머지 연산입니다.

문자열

문자열은 'abc', 'xyz' 등과 같이 작은따옴표 ' 또는 큰따옴표 "로 묶인 텍스트입니다. ' 또는 "" 자체는 문자열의 일부가 아닌 단지 표현일 뿐입니다. 따라서 문자열 'abc'에는 a, b, c의 3개 문자만 있습니다.

부울 값 >

부울 값과 부울 대수의 표현은 정확히 동일합니다. 부울 값에는 true와 false, true 또는 false의 두 가지 값만 사용하여 부울 값을 나타낼 수 있습니다. 또는 부울을 사용할 수 있습니다. 연산은 다음과 같습니다.

true; // 이는 거짓 값입니다. 2 >= 3; // 이것은 거짓 값입니다


&& 연산은 AND 연산입니다. 모든 것이 true인 경우에만 && 연산의 결과가 true입니다.

true && true; / 이 && 문의 결과는 truetrue && false; // 이 && 문은 false로 평가됩니다. false && true && false // 이 && 문은 false로 평가됩니다.


|| || 연산 결과는 true입니다.

false || false; // 이 || 문은 false로 평가됩니다. || 명령문은 truefalse로 평가됩니다. || false로 평가됩니다.


! 이 연산은 true를 false로, false를 true로 바꾸는 단항 연산자입니다.

// 결과는 false입니다. true!(2>5); // 결과는 true

부울 값은 다음과 같은 조건부 판단에 자주 사용됩니다.

var age = 15;if (age >= 18) {
    alert('adult');
} else {
    alert('teenager');
}

Number를 비교할 때 비교 연산자를 통해 부울 값을 얻을 수 있습니다.

2 > 5; // false5 >= 2; // true7 == 7; // true

사실 JavaScript는 모든 데이터 유형의 비교를 허용합니다.

false == 0; // truefalse === 0; // false

특별함을 유지하세요. 항등 연산자 ==에 주목하세요. JavaScript를 설계할 때 두 가지 비교 연산자가 있습니다.

첫 번째는 == 비교로, 자동으로 데이터 유형을 변환한 다음 비교하는 경우가 많습니다.

두 번째 유형은 === 비교이며, 데이터 유형이 일치하지 않으면 false를 반환하고, 다시 비교합니다.

JavaScript의 이러한 설계 결함으로 인해 == 비교를 사용하지 말고 항상 === 비교를 사용하세요.

또 다른 예외는 NaN입니다. 이 특수 숫자는 자신을 포함한 다른 모든 값과 동일하지 않습니다.

NaN === NaN // false

NaN을 결정하는 유일한 방법은 isNaN() 함수를 사용하는 것입니다:

isNaN(NaN); // true

마지막으로 부동 소수점 숫자의 동등 비교에 주의하세요. 🎜>

1 / 3 === (1 - 2 / 3); // false


이것은 JavaScript의 디자인 결함이 아닙니다. 부동 소수점 숫자는 컴퓨터가 무한히 반복되는 소수를 정확하게 표현할 수 없기 때문에 작업 중에 오류가 발생합니다. 두 부동 소수점 숫자가 같은지 비교하려면 차이의 절대값만 계산하여 특정 임계값보다 작은지 확인할 수 있습니다.

Math.abs(1 / 3 - (1 - 2 / 3)) < 0.0000001; // true


null 및 정의되지 않음

null은 0과 비어 있는 값을 나타냅니다. string'', 0은 숫자 값, ''는 길이가 0인 문자열을 나타내고, null은 "비어 있음"을 나타냅니다.

다른 언어에도 JavaScript와 유사한 null 표현이 있습니다. 예를 들어 Java에서는 null을 사용하고 Swift에서는 nil을 사용하며 Python에서는 None을 사용합니다. 그러나 JavaScript에는 "정의되지 않음"을 의미하는 null과 유사한 정의되지 않은 것도 있습니다.

JavaScript 설계자는 null을 사용하여 빈 값을 나타내고 undefine을 사용하여 정의되지 않은 값을 나타내기를 원합니다. 이것이 아무 소용이 없다는 것이 사실로 입증되었으며, 둘 사이의 차이는 별 의미가 없습니다. 대부분의 경우 null을 사용해야 합니다. 정의되지 않음은 함수 매개변수가 전달되는지 여부를 결정할 때만 유용합니다.

배열

배열은 순서대로 배열된 모음이며, 모음의 각 값을 요소라고 합니다. JavaScript 배열에는 모든 데이터 유형이 포함될 수 있습니다. 예:

[1, 2, 3.14, 'Hello', null, true];

위 배열에는 6개의 요소가 포함되어 있습니다. 배열은 []로 표시하고 요소는 ,로 구분합니다.

배열을 생성하는 또 다른 방법은 Array() 함수를 사용하는 것입니다.

new Array(1, 2, 3) // 생성된 배열 [1, 2, 3]


단, 코드 가독성을 위해 []를 직접 사용하는 것이 좋습니다.

배열의 요소는 인덱스로 액세스할 수 있습니다. 인덱스의 시작 값은 0입니다.

var arr = [1, 2, 3.14, 'Hello', null, true];
arr[0]; // 返回索引为0的元素,即1arr[5]; // 返回索引为5的元素,即truearr[6]; // 索引超出了范围,返回undefined

Object

JavaScript 객체는 순서가 지정되지 않은 키-값 모음입니다. 예:

var person = {
    name: 'Bob',
    age: 20,
    tags: ['js', 'web', 'mobile'],
    city: 'Beijing',
    hasCar: true,
    zipcode: null};

JavaScript 객체의 키는 모두 문자열 유형이고 값은 모든 데이터 유형이 될 수 있습니다. 위의 person 객체는 총 6개의 키-값 쌍을 정의하며, 각 쌍은 객체의 속성이라고도 합니다. 예를 들어 person의 이름 속성은 'Bob'이고 zipcode 속성은 null입니다.

객체의 속성을 가져오려면 객체 변수를 사용합니다.속성 이름:

person.name; // 'Bob'person.zipcode; >

변수

변수의 개념은 기본적으로 중학교 대수학의 방정식 변수와 동일하지만, 컴퓨터 프로그램에서 변수는 숫자일 뿐만 아니라 변수도 될 수 있습니다. 모든 데이터 유형이 가능합니다.

변수는 자바스크립트에서 변수명으로 표현되며, 변수명은 영문 대문자와 소문자, 숫자, $, _의 조합으로 이루어져 있으며, 숫자로 시작할 수 없습니다. 변수 이름은 if, while 등과 같은 JavaScript 키워드가 될 수 없습니다. 변수를 선언하려면 var 문을 사용합니다. 예:

var a; // 변수 a가 선언되고 a의 값은 정의되지 않습니다.var $b = 1 // 변수 $b가 선언됩니다. $b 에 값이 할당됩니다. 이때 $b 의 값은 1var s_007 = '007'; // s_007 은 문자열입니다. var Answer = true; // 답은 부울 값입니다. truevar t = null; t 값이 null입니다


변수 이름은 중국어로 해도 되지만, 당황하지 마세요.

JavaScript에서는 등호 =를 사용하여 변수에 값을 할당합니다. 어떤 데이터 유형이든 변수에 할당할 수 있습니다. 동일한 변수를 반복적으로 할당할 수 있으며, 다른 유형의 변수일 수도 있습니다. 그러나 var를 사용하여 한 번만 선언할 수 있습니다. 예:

var a = 123; // a的值是整数123a = 'ABC'; // a变为字符串

이 변수의 유형 자체는 고정되어 있지 않습니다. 언어를 동적 언어라고 하며 그에 대응하는 언어는 정적 언어입니다. 정적 언어에서는 변수를 정의할 때 변수 유형을 지정해야 합니다. 값을 지정할 때 유형이 일치하지 않으면 오류가 보고됩니다. 예를 들어 Java는 정적 언어이고 대입문은 다음과 같습니다.

int a = 123; // a는 정수형 변수이고 형식은 int a = "ABC"로 선언됩니다. // 오류: 정수 유형 변수에 문자열을 할당할 수 없습니다.


이러한 이유로 동적 언어는 정적 언어에 비해 더 유연합니다.

과제문의 등호를 수학적 등호와 동일시하지 마세요. 예를 들어, 다음 코드는

var x = 10;
x = x + 2;

x = x + 2를 수학적으로 이해하더라도 프로그램에서 대입문은 먼저 오른쪽의 표현식 x + 2를 계산하여 가져옵니다. 결과 12. 그런 다음 변수 x에 할당합니다. x의 이전 값은 10이었으므로 재할당 후에는 x의 값이 12가 됩니다.

엄격 모드

JavaScript가 처음 설계되었을 때는 초보자가 쉽게 배울 수 있도록 var를 사용하여 변수를 선언하는 것이 필수는 아니었습니다. 이 설계 오류는 심각한 결과를 초래합니다. var 선언 없이 변수를 사용하면 해당 변수가 자동으로 전역 변수로 선언됩니다.

i = 10; // i现在是全局变量

같은 페이지의 다른 JavaScript 파일에서 var 선언이 사용되지 않고 내가 사용하는 두 변수는 서로 영향을 미치고 디버그하기 어려운 잘못된 결과를 생성합니다.

var를 사용하여 선언한 변수는 전역 변수가 아닙니다. 그 범위는 변수가 선언된 함수 본문으로 제한됩니다. (함수 개념은 나중에 설명합니다.) 서로 다른 기능 기관에서 서로.

JavaScript의 이러한 심각한 설계 결함을 수정하기 위해 ECMA는 이후 사양에서 strict 모드를 도입했습니다. strict 모드에서 실행되는 JavaScript 코드는 var를 사용하지 않고 변수를 사용하면 실행 오류가 발생합니다. .

엄격 모드를 활성화하는 방법은 JavaScript 코드의 첫 번째 줄에 다음과 같이 작성하는 것입니다.

'use strict';

이것은 문자열이며 지원되지 않습니다. 엄격 모드의 브라우저는 이를 문자열 문으로 실행하고, 엄격 모드를 지원하는 브라우저는 엄격 모드를 활성화하여 JavaScript를 실행합니다.

브라우저가 엄격 모드를 지원할 수 있는지 테스트하려면:

'use strict';
// 브라우저가 엄격 모드를 지원하는 경우
// 다음 코드 ReferenceError는 다음과 같습니다. 보고됨:

rreeerrree


지속적인 학습
||
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title> RunJS 演示代码 </title> <script> var ck = function(){ var x = prompt ("输入数据: ", ""); alert(x); } </script> </head> <body> <button onclick="ck();"> 按钮 </button> </body> </html>
  • 코스 추천
  • 코스웨어 다운로드
현재 코스웨어를 다운로드할 수 없습니다. 현재 직원들이 정리하고 있습니다. 앞으로도 본 강좌에 많은 관심 부탁드립니다~