>  기사  >  웹 프론트엔드  >  JavaScript 데이터 유형과 변수란 무엇입니까? 그들 사이를 변환하는 방법은 무엇입니까?

JavaScript 데이터 유형과 변수란 무엇입니까? 그들 사이를 변환하는 방법은 무엇입니까?

伊谢尔伦
伊谢尔伦원래의
2017-07-29 15:11:321369검색

데이터 유형

다음 데이터 유형은 JavaScript에 정의되어 있습니다.

Number

JavaScript는 정수와 부동 소수점 숫자를 구분하지 않으며 숫자로 표시됩니다. 다음은 유효한 숫자 유형입니다.


123; // 整数123
0.456; // 浮点数0.456
1.2345e3; // 科学计数法表示1.2345x1000,等同于1234.5
-99; // 负数
NaN; // NaN表示Not a Number,当无法计算结果时用NaN表示

Infinity; // 무한대란 값이 자바스크립트의 Number가 표현할 수 있는 최대값을 초과하는 경우에는 Infinity로 표현됩니다. 컴퓨터는 바이너리를 사용하기 때문에 16진수로 표현하는 것이 더 편리합니다. 16진수는 0x 접두사와 0-9, a-f로 표시됩니다(예: 0xff00, 0xa5b4c3d2 등). 이는 10진수로 표현된 값과 완전히 동일합니다.
Number는 네 가지 산술 연산을 직접 수행할 수 있으며 규칙은 수학과 일치합니다.


1 + 2; // 3
(1 + 2) * 5 / 2; // 7.5
2 / 0; // Infinity
0 / 0; // NaN
10 % 3; // 1
10.5 % 3; // 1.5

%는 나머지 연산입니다.


String

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

Boolean value

Boolean 값의 표현은 Boolean 대수 A의 표현과 동일합니다. 부울 값에는 true와 false의 두 가지 값만 있습니다. true 또는 false를 사용하여 부울 값을 나타내거나 부울 연산을 통해 계산할 수 있습니다.



true; // 这是一个true值
false; // 这是一个false值
2 > 1; // 这是一个true值
2 >= 3; // 这是一个false值

&& 연산은 AND 연산이며, 모두 참입니다. && 연산의 결과는 참입니다.



true && true; // 这个&&语句计算结果为true
true && false; // 这个&&语句计算结果为false
false && true && false; // 这个&&语句计算结果为false

|| 연산은 OR 연산입니다. 둘 중 하나가 참이면 || 연산은 true입니다:



false || false; // 这个||语句计算结果为false
true || false; // 这个||语句计算结果为true
false || true || false; // 这个||语句计算结果为true

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



! true; // 结果为false
! false; // 结果为true
! (2 > 5); // 结果为true

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



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

비교 연산자

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



2 > 5; // false
5 >= 2; // true
7 == 7; // true

사실, JavaScript 모든 데이터 유형의 비교 허용:



false == 0; // true
false === 0; // false

항등 연산에 특별한 주의

두 번째는 == 비교입니다. 데이터 유형이 일치하지 않으면 자동으로 변환되지 않습니다. false를 반환합니다.
JavaScript의 이러한 설계 결함으로 인해 == 비교를 사용하지 말고 항상 === 비교를 사용하세요.

또 다른 예외는 다른 모든 것과 같지 않은 특수 숫자입니다. 자신을 포함한 값:





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 및 undefound

null은 "빈" 값을 나타내며, 이는 0 및 빈 문자열''과 다릅니다. 0은 숫자 값입니다. , ''는 길이가 0인 문자열을 나타내고, null은 "비어 있음"을 나타냅니다. 다른 언어에는 Java의 null, Swift의 nil, Python express의 None과 같은 JavaScript와 유사한 null 표현도 있습니다. 그러나 JavaScript에는 "정의되지 않음"을 의미하는 null과 유사한 정의되지 않은 것도 있습니다.
JavaScript 디자이너는 null을 사용하여 빈 값을 나타내고 undefine을 사용하여 정의되지 않은 값을 나타내기를 희망합니다. 이것이 아무 소용이 없다는 것이 사실로 입증되었으며, 둘 사이의 차이는 별 의미가 없습니다. 대부분의 경우 null을 사용해야 합니다. 정의되지 않음은 함수 매개변수가 전달되는지 여부를 결정할 때만 유용합니다.
Array
배열은 순서대로 배열된 모음이며, 모음의 각 값을 요소라고 합니다. JavaScript 배열에는 모든 데이터 유형이 포함될 수 있습니다. 예:




[1, 2, 3.14, &#39;Hello&#39;, null, true];

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

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



new Array(1, 2, 3); // 创建了数组[1, 2, 3]

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

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



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

Object

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


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

JavaScript对象的键都是字符串类型,值可以是任意数据类型。上述person对象一共定义了6个键值对,其中每个键又称为对象的属性,例如,person的name属性为'Bob',zipcode属性为null。
要获取一个对象的属性,我们用对象变量.属性名的方式:


person.name; // &#39;Bob&#39;
person.zipcode; // null

变量

变量的概念基本上和初中代数的方程变量是一致的,只是在计算机程序中,变量不仅可以是数字,还可以是任意数据类型。
变量在JavaScript中就是用一个变量名表示,变量名是大小写英文、数字、$和_的组合,且不能用数字开头。变量名也不能是JavaScript的关键字,如if、while等。申明一个变量用var语句,比如:


var a; // 申明了变量a,此时a的值为undefined
var $b = 1; // 申明了变量$b,同时给$b赋值,此时$b的值为1
var s_007 = &#39;007&#39;; // s_007是一个字符串
var Answer = true; // Answer是一个布尔值true
var t = null; // t的值是null

变量名也可以用中文,但是,请不要给自己找麻烦。
在JavaScript中,使用等号=对变量进行赋值。可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量,但是要注意只能用var申明一次,例如:


var a = 123; // a的值是整数123
a = &#39;ABC&#39;; // 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。

strict模式

JavaScript在设计之初,为了方便初学者学习,并不强制要求用var申明变量。这个设计错误带来了严重的后果:如果一个变量没有通过var申明就被使用,那么该变量就自动被申明为全局变量:


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

在同一个页面的不同的JavaScript文件中,如果都不用var申明,恰好都使用了变量i,将造成变量i互相影响,产生难以调试的错误结果。

使用var申明的变量则不是全局变量,它的范围被限制在该变量被申明的函数体内(函数的概念将稍后讲解),同名变量在不同的函数体内互不冲突。

为了修补JavaScript这一严重设计缺陷,ECMA在后续规范中推出了strict模式,在strict模式下运行的JavaScript代码,强制通过var申明变量,未使用var申明变量就使用的,将导致运行错误。

启用strict模式的方法是在JavaScript代码的第一行写上:


&#39;use strict&#39;;

这是一个字符串,不支持strict模式的浏览器会把它当做一个字符串语句执行,支持strict模式的浏览器将开启strict模式运行JavaScript。

来测试一下你窗体顶端


&#39;use strict&#39;;
// 如果浏览器支持strict模式,
// 下面的代码将报ReferenceError错误:

数据类型如何转换:

1. 숫자 xxx*1.0으로 변환
문자열 xxx+""로 변환
2. 하나의 값에서 다른 유형의 값을 추출하여 변환 작업을 완료합니다.
.문자열에서 정수 추출:parseInt();
예:parseInt("123zhang")의 결과는 123입니다.
.문자열에서 부동 소수점 숫자 추출:parFloat();
예:parseFloat("0.55zhang ") 결과는 0.55
. 문자열로 표시되는 자바스크립트 코드 조각을 실행합니다: eval();
예: zhang=eval("1+1") 결과는 zhang=2
입니다. 문자열로 변환: toString( );
예: zhang=eval("1+1") 결과는 zhang=2
3. 전체 값이 한 유형에서 다른 데이터 유형으로 변환됩니다(기본 데이터 유형 변환이라고 함),
기본 데이터 유형 변환 세 가지 방법 :
. 문자 유형으로 변환: String(); 예: String(678)의 결과는 "678"입니다. 숫자 유형으로 변환: Number(); 예: Number("678")의 결과는 678입니다. . Boolean 유형으로 변환: Boolean(); 예: Boolean("aaa")의 결과는 true입니다.

이러한 메서드를 사용할 때 필요한 경우 매개 변수 및 메서드 실행에 대한 예외를 판단하고 처리해 보세요.
참고 문서에서 볼 수 있듯이 실행 효율성을 요약하면 다음과 같습니다.
IE에서는 첫 번째 유형이 가장 빠르며, 두 번째 유형이 두 번째, 세 번째 유형이 가장 나쁩니다. 그러나 그 차이는 100,000배에 불과합니다. 그 차이는 수십배 고작 몇 백 밀리초에 불과합니다.
FF에서는 첫 번째와 두 번째 유형이 기본적으로 동일하며, 세 번째 유형이 가장 느립니다.
속도 차이는 기본적으로 무시할 수 있습니다. 그 차이가 매우 작기 때문입니다.
그러나 코드의 단순성으로 볼 때 첫 번째 방법은 분명히 작성이 간단하고 읽기 쉽습니다.
오류를 보고하는 두 번째 방법은 개체에 toString 메서드가 없기 때문에 문제가 없습니다. 게다가 그는 언제나 가장 빨랐다.
그래서 저는 첫 번째 방법을 사용하여 데이터 유형 변환을 완료하는 데 익숙합니다.
그러나 예를 들어 "123456abcd"에 포함된 숫자를 추출해야 한다면 당연히parsetInt,parseFloat와 같은 함수를 사용해야 합니다.
하지만 변환 결과가 NaN 등인 경우도 있으므로 판단이 필요하다는 점을 참고하세요.

위 내용은 JavaScript 데이터 유형과 변수란 무엇입니까? 그들 사이를 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.