Home  >  Article  >  Web Front-end  >  JavaScript data type study notes_javascript skills

JavaScript data type study notes_javascript skills

WBOY
WBOYOriginal
2016-05-16 15:18:241346browse

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数据类型有所帮助。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn