>웹 프론트엔드 >프런트엔드 Q&A >자바스크립트의 기본 데이터 유형은 무엇입니까?

자바스크립트의 기본 데이터 유형은 무엇입니까?

藏色散人
藏色散人원래의
2021-09-01 14:29:2012606검색

Javascript에는 다음과 같은 5가지 기본 데이터 유형이 있습니다. 1. 정의되지 않은 유형, 3. 부울 유형, 5. 문자열 유형.

자바스크립트의 기본 데이터 유형은 무엇입니까?

이 기사의 운영 환경: Windows 7 시스템, JavaScript 버전 1.8.5, DELL G3 컴퓨터.

JS의 기본 데이터 유형은 무엇인가요?

ECMAScript에는 5가지 단순 데이터 유형(기본 데이터 유형이라고도 함)이 있습니다: Undefine, Null, Boolean 코드>, 숫자문자열. 복잡한 데이터 유형도 하나 있습니다. 객체는 기본적으로 순서가 지정되지 않은 이름-값 쌍의 집합으로 구성됩니다. ECMAScript中有5中简单数据类型(也称为基本数据类型): UndefinedNullBooleanNumberString。还有1中复杂的数据类型————ObjectObject本质上是由一组无序的名值对组成的。

其中UndefinedNullBooleanNumber都属于基本类型。ObjectArrayFunction则属于引用类型,String有些特殊,具体的会在下面展开分析。

变量

ECMAScript中用var关键字来定义变量,因为js是弱类型的,所以无法确定变量一定会存储什么值,也就不知道变量到底会是什么类型,而且变量的类型可以随时改变。

这就是ECMAScript是松散类型的来由,所谓松散类型就是可以用来保存任何类型的数据。

ps:
es6中新增了let命令来声明变量、const命令声明一个只读的常量。

let的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。

const一旦声明,常量的值就不能改变。

关于letconst这里不做展开讨论。

typeof 操作符

由于js中的变量是松散类型的,所以它提供了一种检测当前变量的数据类型的方法,也就是typeof关键字.
通过typeof关键字,对这5种数据类型会返回下面的值(以字符串形式显示)
undefined    ----------   如果值未定义                       Undefined

boolean      ----------     如果这个值是布尔值             Boolean

string        ----------     如果这个值是字符串             String

number      ----------     如果这个值是数值类型           Number

object        ----------     如果这个值是对象或null Object

需要注意的是typeof null返回为object,因为特殊值null被认为是一个空的对象引用。

Undefined

Undefined类型只有一个值,即特殊的undefined。在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined。不过,一般建议尽量给变量初始化,但是在早期的js版本中是没有规定undefined这个值的,所以在有些框架中为了兼容旧版浏览器,会给window对象添加undefined值。

window['undefined'] = window['undefined'];  
//或者
window.undefined = window.undefined;

Null

Null类型是第二个只有一个值的数据类型,这个特殊的值是null。从逻辑角度来看,null值表示一个空对象指针,而这也正是使用typeof操作符检测null时会返回object的原因。

  var car = null;
  console.log(typeof car); // "object"

如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null而不是其他值。这样一来,只要直接检测null
그 중 Undefine, Null, Boolean, Number는 모두 기본 유형입니다. Object, ArrayFunction은 참조 유형입니다. String은 다소 특별합니다.

변수

js가 약하므로 ECMAScript에서 var 키워드를 사용하여 변수를 정의하세요. 타입이므로 변수가 어떤 값을 저장할 것인지 판단하는 것이 불가능하고, 변수가 어떤 타입이 될지도 알 수 없으며, 변수의 타입은 언제든지 바뀔 수 있습니다.

이것이 ECMAScript가 느슨한 유형인 이유입니다. 소위 느슨한 유형은 모든 유형의 데이터를 저장하는 데 사용할 수 있다는 의미입니다.

🎜ps:🎜es6에는 변수를 선언하는 let 명령과 const 명령이 추가되었습니다. 읽기 전용 상수를 선언합니다. 🎜🎜letvar와 유사하게 사용되지만 선언된 변수는 let 명령이 있는 코드에만 있습니다. 블록 내에서 유효합니다. 🎜🎜const한 번 선언된 상수 값은 변경할 수 없습니다. 🎜🎜여기에서는 letconst에 대한 논의가 없습니다. 🎜

typeof 연산자

🎜 js의 변수는 느슨한 형식이므로 현재 변수를 감지하는 방법을 제공합니다. 데이터 형식 방법 , 즉 typeof 키워드입니다.🎜typeof 키워드를 통해 이러한 5가지 데이터 유형🎜정의되지 않음 코드에 대해 다음 값 ​​​​(문자열 형식으로 표시됨)이 반환됩니다. >                                                                                                         ~ > ~           code> ---------- 이 값이 숫자 유형 <code>Number🎜🎜object 이 값이 Object 또는 null Object🎜🎜인 경우 typeof null로 반환된다는 점에 유의해야 합니다. object 특수 값 null은 빈 개체 참조로 간주되기 때문입니다. 🎜

정의되지 않음

🎜 Undefine 유형에는 특수 undefine이라는 하나의 값만 있습니다. var를 사용하여 변수를 선언했지만 초기화하지 않은 경우 변수 값은 정의되지 않음입니다. 하지만 일반적으로 변수를 최대한 초기화하는 것이 좋습니다. 그러나 초기 js 버전에서는 undefine 값이 지정되지 않았기 때문에 일부 프레임워크에서는 이전 브라우저와 호환 가능하면 window 개체에 undefine 값을 추가합니다. 🎜
  if(car != null){
    //对car对象执行某些操作
  }

Null

🎜 Null 유형은 값이 하나만 있는 두 번째 데이터 유형입니다. 이 특수 값은 null입니다. 논리적 관점에서 볼 때 null 값은 null 개체 포인터를 나타내며, 이는 typeof 연산자를 사용하여 null 코드>객체 이유. 🎜
console.log(undefined == null); //true
🎜정의된 변수가 향후 객체를 담는 데 사용될 예정이라면 변수를 다른 값으로 초기화하는 것보다 null로 초기화하는 것이 좋습니다. 이러한 방식으로 null 값을 직접 감지하여 해당 변수가 이미 객체에 대한 참조를 보유하고 있는지 여부를 알 수 있습니다. 🎜예: 🎜
    var message = 'Hello World';
    var messageAsBoolean = Boolean(message);
🎜사실 정의되지 않은 값은 null 값에서 파생되므로 ECMA-262에서는 동등 테스트가 true를 반환하도록 규정합니다. 🎜
    var message = 'Hello World';
    if(message)
    {
        alert("Value is true");
    }
🎜null과 undefine은 이러한 관계를 갖고 있지만 용도는 완전히 다릅니다. 어떤 경우에도 변수 값을 명시적으로 정의되지 않음으로 설정할 필요는 없지만 null에는 동일한 규칙이 적용되지 않습니다. 즉, 개체를 보유하도록 의도된 변수가 실제로 개체를 보유하지 않는 한 변수가 null 값을 보유하도록 명시적으로 허용해야 합니다. 이렇게 하면 null 객체 포인터로서의 null 규칙을 반영할 뿐만 아니라 null과 정의되지 않은 것을 더 잘 구별하는 데도 도움이 됩니다. 🎜

Boolean

该类型只有两个字面值:true和false。这两个值与数字值不是一回事,因此true不一定等于1,而false也不一定等于0。

虽然Boolean类型的字面值只有两个,但JavaScript中所有类型的值都有与这两个Boolean值等价的值。要将一个值转换为其对应的Boolean值,可以调用类型转换函数Boolean(),例如:

    var message = 'Hello World';
    var messageAsBoolean = Boolean(message);

在这个例子中,字符串message被转换成了一个Boolean值,该值被保存在messageAsBoolean变量中。可以对任何数据类型的值调用Boolean()函数,而且总会返回一个Boolean值。至于返回的这个值是true还是false,取决于要转换值的数据类型及其实际值。下表给出了各种数据类型及其对象的转换规则。

数据类型 转换为true的值 转换为false的值
Boolean true false
String 任何非空的字符串 ""(空字符串)
Number 任何非0数值(包括无穷大) 0和NAN
Object 任何对象 null
Undefined 不适用 undefined
    var message = 'Hello World';
    if(message)
    {
        alert("Value is true");
    }

运行这个示例,就会显示一个警告框,因为字符串message被自动转换成了对应的Boolean值(true)。由于存在这种自动执行的Boolean转换,因此确切地知道在流控制语句中使用的是什么变量至关重要。

ps:使用!!操作符转换布尔值
!!一般用来将后面的表达式强制转换为布尔类型的数据(boolean),也就是只能是true或者false;

对null与undefined等其他用隐式转换的值,用!操作符时都会产生true的结果,所以用两个感叹号的作用就在于将这些值转换为“等价”的布尔值;

var foo;  
alert(!foo);//undifined情况下,一个感叹号返回的是true;  
alert(!goo);//null情况下,一个感叹号返回的也是true;  
var o={flag:true};  
var test=!!o.flag;//等效于var test=o.flag||false;  
alert(test);

这段例子,演示了在undifined和null时,用一个感叹号返回的都是true,用两个感叹号返回的就是false,所以两个感叹号的作用就在于,如果明确设置了变量的值(非null/undifined/0/”“等值),结果就会根据变量的实际值来返回,如果没有设置,结果就会返回false。

【推荐学习:javascript基础教程

Number

这种类型用来表示整数和浮点数值,还有一种特殊的数值,即NaN(非数值 Not a Number)。这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。例如,在其他编程语言中,任何数值除以0都会导致错误,从而停止代码执行。但在JavaScript中,任何数值除以0会返回NaN,因此不会影响其他代码的执行。

NaN本身有两个非同寻常的特点。首先,任何涉及NaN的操作(例如NaN/10)都会返回NaN,这个特点在多步计算中有可能导致问题。其次,NaN与任何值都不相等,包括NaN本身。例如,下面的代码会返回false。

alert(NaN == NaN);    //false

String

String类型用于表示由零或多个16位Unicode字符组成的字符序列,即字符串。字符串可以由单引号(')或双引号(")表示。

String类型的特殊性

string类型有些特殊,因为字符串具有可变的大小,所以显然它不能被直接存储在具有固定大小的变量中。由于效率的原因,我们希望JS只复制对字符串的引用,而不是字符串的内容。但是另一方面,字符串在许多方面都和基本类型的表现相似,而字符串是不可变的这一事实(即没法改变一个字符串值的内容),因此可以将字符串看成行为与基本类型相似的不可变引用类型

Boolean、Number、String 这三个是Javascript中的基本包装类型,也就是这三个其实是一个构造函数,他们是Function的实例,是引用类型,至于这里的String与以上说的String是同名,是因为其实上文说的String是指字符串,这里的String指的是String这个构造函数,上面那么写,是为了更好的理解,因为Javascript是松散类型的。我们可以看下String实例化的例子:

var name = String("jwy");
alert(typeof name);//"string"
var x=new String('12345')
typeof x //object
x='12345'
typeof x //string
var author = "Tom";
alert(typeof name);//"string"

至于author这个会有length,substring等等这些方法,其实string只是String的一个实例,类似于C#中的String,和string.

注意,typeof 变量  如果值是"string" 的话,也就是这个变量是字符串,在Javascript中,字符串是基本类型,而在C#或Java中,字符串是引用类型,但是Javascript中的String是引用类型,因为它是Javascript中定义好的基本包装类型,在C#中,String跟string其实是一样的。

本帖只是简要的copy了一些JavaScript高级程序设计(第三版)内容,外加了自己侧重的角度,看本帖的朋友还是要看书啊,这里只是做个参考。

위 내용은 자바스크립트의 기본 데이터 유형은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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