There are 5 simple data types in ECMAscript, also known as basic data types: Undefined, Null, Boolean, Number and String. There is also a complex data type - Object.
Undefined Type
When a variable is declared using var but is not initialized, the value of the variable is undefined. Such as:
var number; document.write(number); //undefined
If the variable is not declared, the following error will occur. Such as:
document.write(str); //错误
But when executed with typeof, undefined value will be returned regardless of whether it is declared or not. Such as:
var num; document.write(typeof num); //undefined document.write(typeof str); //undefined
Null type
When using typeof to detect null, "object" will be returned. Such as:
var num = null; document.write(typeof num); //object
In fact, the undefined value is derived from the null value, so they will return true if they are equal. Such as:
alert(null == undefined); //true
What should be noted here is that as long as the variable intended to save the object has not actually saved the object, the variable should be explicitly allowed to save the null value. This will help distinguish null and undefined. Such as:
var num1 = null; var num2; document.write(typeof num1 + " " + typeof num2); //object undefined
Boolean type
To convert a value to its corresponding Boolean value, you can use the conversion function Boolean(). Such as:
var str = "helloworld"; document.write(Boolean(str)); //true
Chapter 3.4.4 in the book "JavaScript Advanced Programming Design" gives a table of various data types and their corresponding conversion rules. There are probably the following types:
- When the data type is String, any non-empty string will be converted to true;
- When the data type is Number, except 0 and NaN which will be converted to false, everything else will be converted to true;
- When the data type is Object, except null, it will be converted to true;
- When the data type is Undefined, n/a will be converted to true and undefined will be converted to false;
It should be noted here that if statements often use Boolean conversions that automatically execute responses as conditions. Such as:
var str = "helloworld"; if (str){ document.write("hellothere"); } //hellothere
Number type
In addition to being represented in decimal, integers can also be represented by octal or hexadecimal literal values. The first bit of the octal literal value must be 0, followed by a sequence of octal digits (0~7). Such as:
var num1 = 070; //八进制的56 var num2 = 032; //八进制的32 var num3 = 079; //错误的八进制(>7) var num4 = 09; //错误的八进制(>7)
The first two digits of a hexadecimal literal value must be 0x, followed by any hexadecimal digit (0~9 and A~F). Such as:
var num1 = 0xA; //十六进制的10 var num1 = 0xa; //也是十六进制的10(字母不区分大小写)
Floating point value
The important thing to note here is that you should never compare specific floating point values. Such as:
var a = 0.1; var b = 0.2; if (a + b == 0.3){ document.write("you are right") } //因为0.1 加上0.2 实际上等于0.30000000000000004
Value range
The maximum and minimum values that ECMAScript can represent are stored in Number.MAX_VALUE and Number.MIN_VALUE. To determine whether a value is finite, use the isFinite() function. Such as:
document.write(isFinite(Number.MAX_VALUE + Number.MAX_VALUE)); //false
NaN
0 divided by 0 will return NaN, positive number divided by 0 will return Infinity, and complex number will return -Infinity. Second, NaN is not equal to any number, including itself. In addition, the function isNaN() can help us determine whether this parameter is "not a numerical value". Such as:
document.write(isNaN("a")); //true; document.write(isNaN("324")); //false; document.write(isNaN(true)); //false; document.write(isNaN(false)); //false; document.write(isNaN(NaN)); //true;
Numeric conversion
There are three functions that can convert non-numeric values into numeric values: Number(), parseInt(), and parseFloat().
The conversion rules of Number() are as follows:
If it is a Boolean value, true and false will be converted to 1 and 0.
If it is a numeric value, it is unchanged.
If it is a null value, it is converted to 0.
If it is undefined, returns NaN.
If it is a string, follow the following rules:
- If there are only numbers, convert them to decimal values.
- If it is in floating point format, convert it into the corresponding floating point value. Leading zeros are also ignored.
- If it is in hexadecimal format, it will be converted into decimal number.
- If the string is empty, it will be converted to 0.
- Other cases will be converted to NaN.
See the example below for details:
document.write(Number(true)); //1 document.write(Number(false)); //0 document.write(Number("789")); //789 document.write(Number(null)); //0 document.write(Number(undefined)); //NaN document.write(Number("02.0942")); //2.0942 document.write(Number(0xa)); //10 document.write(Number("")); //0 document.write(Number("fdsa")); //NaN
parseInt()的转换规则如下:
- 如果第一个字符不是数字字符或者符号,parseInt()会返回NaN。
- 用parseInt()转换空字符串会返回NaN。
- 如果第一个字符是数字字符,它会继续解析第二个字符,直到遇到了一个非数字字符.
下面是具体的例子:
document.write(parseInt("fds")); //NaN document.write(parseInt("")); //NaN document.write(parseInt("1111112abc")); //1111112 document.write(parseInt("-1111112abc")); //-1111112 document.write(parseInt("+1111112abc")); //-1111112 document.write(parseInt("0xa")); //10 document.write(parseInt("0022.00009")); //22 document.write(parseInt("070")); //ECMAScript 3认为是56(八进制), ECMAScript 5认为是70(十进制)
另外需要注意的是,ECMAScript 5已经不具备解析八进制值的能力了所以为了消除这个问题,可以为这个函数提供第二个参数:转换时使用的基数(多少进制),具体如下:
document.write(parseInt("070",10)); //70 document.write(parseInt("070",8)); //56 document.write(parseInt("070",16)); //112
多数情况下,最好默认设置成10进制。
parseFloat()的转换规则如下:
- 与parseInt()类似,不同的是字符串第一个小数点是有效的,而从第二个小数点开始包括第二个小数点是无效的。
- 他不能解析十六进制数值!!!
- 他只能解析十进制数值!!!
- 他没有用第二个基数来指定进制的用法。
下面是具体的例子:
document.write(parseFloat("421")); //421 document.write(parseFloat("0421.32.1")); //421.32 document.write(parseFloat("0xaafd")); //0 document.write(parseFloat("070")); //70 document.write(parseFloat("070abc")); //70 document.write(parseFloat("")); //NaN document.write(parseFloat("abc")); //NaN
String 类型
要把一个值转换成字符串有两种方式。第一种是使用几乎每个值都有的toString()方法。如下:
document.write((533).toString(10)); //"533" document.write((0xa).toString(10)); //"10" document.write((0xa).toString(2)); //"1010" document.write((true).toString(10)); //"true" document.write((false).toString(10)); //"false"
另外需要注意的是,null 和 undefined 不能转换。
document.write((null).toString(10)); // document.write((undefined).toString(10)); //
如果不知道需要转换的数值是否是null 或者undefined 则应该使用转型函数String(),如果是null 会返回"null"如果是undefined 会返回"undefined"。如下:
document.write(String(null)); //"null" document.write(String(undefined)); //"undefined"
另外在下一篇文章中再详细介绍Object 类型。
以上就是关于JavaScript数据类型的简单介绍,希望对大家学习JavaScript数据类型有所帮助。

Python is more suitable for beginners, with a smooth learning curve and concise syntax; JavaScript is suitable for front-end development, with a steep learning curve and flexible syntax. 1. Python syntax is intuitive and suitable for data science and back-end development. 2. JavaScript is flexible and widely used in front-end and server-side programming.

Python and JavaScript have their own advantages and disadvantages in terms of community, libraries and resources. 1) The Python community is friendly and suitable for beginners, but the front-end development resources are not as rich as JavaScript. 2) Python is powerful in data science and machine learning libraries, while JavaScript is better in front-end development libraries and frameworks. 3) Both have rich learning resources, but Python is suitable for starting with official documents, while JavaScript is better with MDNWebDocs. The choice should be based on project needs and personal interests.

The shift from C/C to JavaScript requires adapting to dynamic typing, garbage collection and asynchronous programming. 1) C/C is a statically typed language that requires manual memory management, while JavaScript is dynamically typed and garbage collection is automatically processed. 2) C/C needs to be compiled into machine code, while JavaScript is an interpreted language. 3) JavaScript introduces concepts such as closures, prototype chains and Promise, which enhances flexibility and asynchronous programming capabilities.

Different JavaScript engines have different effects when parsing and executing JavaScript code, because the implementation principles and optimization strategies of each engine differ. 1. Lexical analysis: convert source code into lexical unit. 2. Grammar analysis: Generate an abstract syntax tree. 3. Optimization and compilation: Generate machine code through the JIT compiler. 4. Execute: Run the machine code. V8 engine optimizes through instant compilation and hidden class, SpiderMonkey uses a type inference system, resulting in different performance performance on the same code.

JavaScript's applications in the real world include server-side programming, mobile application development and Internet of Things control: 1. Server-side programming is realized through Node.js, suitable for high concurrent request processing. 2. Mobile application development is carried out through ReactNative and supports cross-platform deployment. 3. Used for IoT device control through Johnny-Five library, suitable for hardware interaction.

I built a functional multi-tenant SaaS application (an EdTech app) with your everyday tech tool and you can do the same. First, what’s a multi-tenant SaaS application? Multi-tenant SaaS applications let you serve multiple customers from a sing

This article demonstrates frontend integration with a backend secured by Permit, building a functional EdTech SaaS application using Next.js. The frontend fetches user permissions to control UI visibility and ensures API requests adhere to role-base

JavaScript is the core language of modern web development and is widely used for its diversity and flexibility. 1) Front-end development: build dynamic web pages and single-page applications through DOM operations and modern frameworks (such as React, Vue.js, Angular). 2) Server-side development: Node.js uses a non-blocking I/O model to handle high concurrency and real-time applications. 3) Mobile and desktop application development: cross-platform development is realized through ReactNative and Electron to improve development efficiency.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

SublimeText3 Chinese version
Chinese version, very easy to use

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

Zend Studio 13.0.1
Powerful PHP integrated development environment

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

Atom editor mac version download
The most popular open source editor