>  기사  >  웹 프론트엔드  >  JavaScript 유형, 값 및 Variable_javascript 기술 요약

JavaScript 유형, 값 및 Variable_javascript 기술 요약

WBOY
WBOY원래의
2016-05-16 15:50:571015검색

머리말: JavaScript 데이터 유형은 기본 유형과 객체 유형이라는 두 가지 범주로 나뉩니다. 5가지 기본 유형: 숫자, 문자열, 부울 값, null(비어 있음), 정의되지 않음(정의되지 않음). 객체는 속성의 모음이며 각 속성은 "이름/값 쌍"으로 구성됩니다(값은 기본 값 또는 객체일 수 있음). 세 가지 특수 개체: 전역 개체, 배열 및 함수. JavaScript 언어의 핵심은 날짜(Date) 클래스, 일반(RegExp) 클래스 및 오류(Error) 클래스라는 세 가지 유용한 클래스도 정의합니다.

 1자리

자바스크립트는 정수 값과 부동 소수점 값을 구분하지 않습니다. 자바스크립트는 10진수 리터럴(소위 리터럴은 프로그램에서 직접 사용하는 데이터 값)과 16진수 값(접두사 0x 또는 0X가 붙는 문자 o가 아닌 숫자 0)을 인식할 수 있습니다. 문자 o인 경우, 그렇다면 16진수 값이 식별자가 됩니다.) ECMAScript 표준은 8진수 리터럴을 지원하지 않지만 JavaScript의 일부 구현에서는 8진수 형식을 사용하여 정수(숫자 0이 앞에 붙음)를 표시할 수 있습니다. 저자는 IE, Chrome 및 FF의 세 가지 브라우저에서 정수를 표시하기 위해 8진수를 사용합니다. 컴퓨터. 변수 할당도 문제가 되지 않습니다. 그러나 ECMAScript6의 엄격 모드에서는 8진수 리터럴이 명시적으로 금지됩니다.

부동 소수점 리터럴을 작성하는 방법에는 두 가지가 있습니다. ① 실수를 표기하는 전통적인 방법: 정수 부분, 소수점, 소수 부분으로 구성됩니다. ② 지수 계산 방법: 실수 뒤에 문자 e 또는 E가 오고 그 뒤에 양수 또는 음수 기호가 옵니다. , 그 뒤에 정수 지수가 옵니다.

 1.1 산술연산의 오버플로

JavaScript의 산술 연산은 오버플로, 언더플로 또는 0으로 나눌 때 오류를 보고하지 않습니다.

오버플로: 연산 결과가 자바스크립트가 표현할 수 있는 수의 상한을 초과하는 경우 결과는 양의 무한대 또는 음의 무한대-무한대입니다. 무한대 값의 동작 특성은 현실과도 일치합니다. 이를 기반으로 한 덧셈, 뺄셈, 곱셈 및 나눗셈 연산의 결과는 여전히 무한값입니다(물론 해당 부호는 유지됨). 연산 결과가 무한할 때 0에 가깝고 JavaScript가 나타낼 수 있는 가장 작은 값보다 작습니다. 값이 여전히 작았을 때 무슨 일이 일어났습니까? 이 경우 0이 반환됩니다. 음수가 언더플로우되면 특수 값 "음수 0"이 반환됩니다. 음수 0과 정수 0은 본질적으로 동일합니다(엄격한 동일성 ===를 사용하여 테스트할 수도 있음). 단, 제수인 경우는 예외입니다.

var zero = 0;  //正零值
var negz = -0;  //负零值
zero === negz  //表达式返回值为true
1/zero === 1/negz  
//表达式返回值false,等价于判断正无穷大和负无穷大是否严格相等

0으로 나누면 양의 무한대 또는 음의 무한대가 반환됩니다. 그러나 0을 0으로 나누면 NaN(JavaScript의 사전 정의된 객체 Number의 NaN 속성 값)이 반환됩니다. NaN이 반환되는 상황은 네 가지입니다. ① 0 나누기 0 ② 무한대 나누기 무한대 ③ 임의의 음수에 대한 제곱근 연산 수행 ④ 산술 연산자가 숫자가 아니거나 숫자로 변환할 수 없는 피연산자와 함께 사용되는 경우.

NaN 값에는 특별한 점이 있습니다. NaN 값은 자신을 포함한 어떤 값과도 동일하지 않습니다. 변수 x가 NaN인지 판단하는 방법에는 두 가지가 있습니다. ① isNaN() 함수를 사용합니다. ② x != x를 사용하여 판단합니다. 표현식 결과는 x가 NaN인 경우에만 참입니다. JavaScript에는 매개변수가 NaN, Infinity 또는 -Infinity가 아닐 때 true를 반환하는 유사한 함수 isFinite()가 있습니다.

 1.2 이진 부동 소수점 수 및 반올림 오류

수많은 실수가 있지만 JavaScript는 그 중 제한된 수만을 부동 소수점 숫자 형식으로 표현할 수 있습니다. 즉, JavaScript에서 실수를 사용할 때 실수는 실제 값의 대략적인 표현인 경우가 많습니다. JavaScript는 1/2, 1/8, 1/1024와 같은 분수를 정확하게 표현할 수 있는 이진 표현인 IEEE-754 부동 소수점 숫자 표현을 사용하지만 소수 1/10, 1/10 등은 표현할 수 없습니다. 정확히. 예:

var x = 0.3 -0.2;  //x=0.09999999999999998
var y = 0.2 - 0.1;  // y=0.1
x == y       //false
x == 0.1      //false
y == 0.1      //true
0.1 == 0.1     //true
var z = x + y;   //z=0.19999999999999998

  2 文本

  2.1 字符串、字符集

  字符串(string)是一组由16位值组成的不可变的有序序列,每个字符通常来自于Unicode字符集。字符串的长度(length)是其所含16位值得个数。JavaScript通过字符串类型来表示文本。注意:JavaScript中并没有表示单个字符的“字符型”。要表示一个16位值,只需将其赋值给字符串变量即可。

  JavaScript采用UTF-16编码的Unicode字符集,JavaScript字符串是由一组无符号的16位值组成的序列。那些不能表示为16位的Unicode字符则遵循UTF-16编码规则——用两个16位值组成一个序列(或称作“代理项对”)表示。这意味着一个长度为2的JavaScript字符串有可能表示一个Unicode字符。注意:JavaScript定义的各式字符串的操作方法均作用于16位值,而非字符,且不会对代理项对做单独处理。书看到这里,又结合http://www.alloyteam.com/2013/12/js-calculate-the-number-of-bytes-occupied-by-a-string/上面所述,终于对Unicode字符集、UTF-8、UTF-16稍有理解。

  字符串的定界符可以是单引号或者双引号。这两种形式的定界符可以嵌套,但是不能多层嵌套(比如,双引号可以包含单引号,这时单引号中不能再包含双引号了)。正如上篇所说,一个字符串值可以拆分为数行,每行必须以反斜线(\)结束,这时反斜线和行结束符都不算是字符串内容,即字符串本身并非是多行,只是写成了多行的形式。

  注意:①在JavaScript中字符串是固定不变的(除非重新赋值),类似replace()和toUpperCase()的方法都返回新字符串,原字符串本身并没有变化;②字符串可以当做只读数组,除了使用charAt()方法来查询一个单一字符,也可以使用方括号的方式来访问字符串中的单个字符(16位值),例如:

    s = "hello, world";
    s[0]   //=>"h"

 2.2 이스케이프 문자

이스케이프 문자 의미
o NUL 문자(u0000)
b 백스페이스 문자(u0008)
t 가로 탭(u0009)
n 개행 문자(u000A)
v 세로 탭(u000B)
f 폼 피드 문자(u000C)
r 캐리지 리턴(u000D)
" 큰따옴표(u0022)
' 아포스트로피 또는 작은따옴표(u0027)
\ 백슬래시(u005C)
두 자리 16진수 XX로 지정된 xXX Latin-1 문자
4자리 16진수 XXXX
로 지정된 uXXXX 유니코드 문자 ~ ~ 참고: "" 문자가 표에 나열되지 않은 문자 앞에 오는 경우 "" 문자는 무시됩니다. 예를 들어 "#"과 "#"은 동일합니다. 백슬래시는 여러 줄 문자열의 각 줄 끝에 백슬래시를 사용하는 역할도 한다는 점을 잊지 마세요. 

 3 부울 값

JavaScript의 값은 부울 값으로 변환될 수 있습니다. 그 중 null, undefine, 0, -0, NaN, ""(빈 문자열), 이 6개 값은 false, false로 변환되며 이 6개 값을 모두 "false 값"이라고도 합니다. 객체(배열)를 포함한 다른 값은 true로 변환되며, true와 이러한 값을 "참값"이라고 합니다. 참고: Boolean에는 toString() 메서드가 포함되어 있으므로 이 메서드를 사용하여 문자열을 "true" 또는 "false"로 변환할 수 있지만 다른 유용한 메서드는 포함되어 있지 않습니다.

위 내용은 이 글의 전체 내용입니다. 모두 마음에 드셨으면 좋겠습니다.

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