Home > Article > Web Front-end > JavaScript data type study notes_javascript skills
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:
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:
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()的转换规则如下:
下面是具体的例子:
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()的转换规则如下:
下面是具体的例子:
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数据类型有所帮助。