欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

javaScript六大数据类型

程序员文章站 2022-07-08 12:23:49
...

JavaScript数据类型

    基本数据类型:Undefined,Null,Boolean,Number,String。

    复杂数据类型:Object。

 

    1.Undefined

    这个类型只有一个值是undefined,使用var声明了 但是没有赋值的变量

 

Js代码  javaScript六大数据类型
            
    
    博客分类: javascript javaScriptjsWeb前端 
  1. var message;  
  2. alert(message == undefined) // true  
  3. typeof message // "undefined"  

 

 

    2.Null 

    这个类型只有一个值是null,标示一个空的对象指针。

Js代码  javaScript六大数据类型
            
    
    博客分类: javascript javaScriptjsWeb前端 
  1. var message = null;  
  2. typeof message; // "null"  

 

    3.Boolean

    这个类型的值有两个 true 和 false 是区分大小写的

 

Js代码  javaScript六大数据类型
            
    
    博客分类: javascript javaScriptjsWeb前端 
  1. // 转换为true的值  
  2. var value = true;  
  3. var value2 = "hello world"; // 任何非空字符串  
  4. var value3 = 1; // 任何非零数字  
  5. var value4 = {}; // 任何对象 包括function,Object  
  6.   
  7. if (value & value2 & value3) {  
  8.     alert("value is true");  
  9. }  
  10.   
  11. // 转换为 false 的值  
  12. var value = false;  
  13. var value2 = ""; // 空字符串  
  14. var value3 = 0; // 0或NaN  
  15. var value4 = null; // null  
  16. var value5 = undefined; // undefined  
  17.   
  18. if (value & value2 & value3 & value4) {  
  19.     // 不会进来  
  20. } else {  
  21.     alert("value is false");  
  22. }  
  23.   
  24. typeof  true; // "boolean"  

   

 

    4.Number

 

Js代码  javaScript六大数据类型
            
    
    博客分类: javascript javaScriptjsWeb前端 
  1. var octalNum1 = 070;  // 八进制56  
  2. var octalNum2 = 079; // 无效的八进制——79  
  3. var octalNum3 = 08; // 无效的八进制——8  
  4. // 在严格模式下以上赋值是无效的 回导致浏览器抛出异常  
  5.   
  6. var hexNum1 = 0xA; // 十六进制的10  
  7. var hexNum2 = 0x1f; // 十六进制的31  

    4.1 浮点数值

 

    小数点后边必须包含一位数字

 

Js代码  javaScript六大数据类型
            
    
    博客分类: javascript javaScriptjsWeb前端 
  1. var floatNum1 = 1.1 或  var floatNum2 = 0.1  

    用e表示法表示数值

Js代码  javaScript六大数据类型
            
    
    博客分类: javascript javaScriptjsWeb前端 
  1. var floatNum = 3.125e7; // 31250000  

    浮点数值最高精度是17位小数

Js代码  javaScript六大数据类型
            
    
    博客分类: javascript javaScriptjsWeb前端 
  1. // 浮点预算会失去精度  
  2. var a = 0.2;  
  3. var b = 0.3;  
  4. a + b; // 0.50000000000000004  

    4.2 数值范围

 

    最小数值保存在 Number.MIN_VALUE中,值为 5e-324,最大数值保存在 Number.MAX_VALUE 中,值为1.7976931348623157e+308。

     如果计算数值超出了数值范围,这个值会被自动转成Infinity值。可以用isFinite()函数检测是否超出数值范围

Js代码  javaScript六大数据类型
            
    
    博客分类: javascript javaScriptjsWeb前端 
  1. var num = Number.MAX_VALUE + Number.MAX_VALUE; // Infinity  
  2. isFinite(num);  // false  

    4.3 NaN

 

    NaN,表示非数值(Not a Numer)是一个特殊数值,计算导致错误时会返回NaN。

    全局函数isNaN(),接受任何参数来判断这个参数“不是数值”。

    两个特性:任何涉及NaN的操作都会返回NaN,NaN与任何值都不相等。

Js代码  javaScript六大数据类型
            
    
    博客分类: javascript javaScriptjsWeb前端 
  1. NaN/10;    // NaN  
  2. NaN == NaN; //  false  
  3.   
  4. isNaN(NaN);  // true  
  5. isNaN(10);    // false (是一个数值)  
  6. isNaN("10"); // false (可以转换成数值)  
  7. isNaN("name"); // true (不能转换成数值)  
  8. isNaN(true);  // false  (可以转换成数值1)  

    4.4 数值转换

 

    有3个函数把非数字转换成数字,Number(),parseInt(),parseFloat()。

 

Js代码  javaScript六大数据类型
            
    
    博客分类: javascript javaScriptjsWeb前端 
  1. // Number()  
  2. var num1 = Number("hello world"); // NaN  
  3. var num2 = Number(""); // 0  
  4. var num3 = Number("00011"); // 11  
  5. var num4 = Number(true); // 1  
  6. var num5 = Number(false); // 0  
  7.   
  8. // parseInt()  
  9. var num1 = parseInt("1234hello world"); // 1234  
  10. var num2 = parseInt(""); // NaN  
  11. var num3 = parseInt("0xA"); // 10(十六进制数)  
  12. var num4 = parseInt(22.5); // 22  
  13. var num5 = parseInt("70"); // 70  
  14. var num6 = parseInt(true); // NaN  
  15.   
  16. var num1 = parseInt("10", 2); // 2 (按二进制解析)  
  17. var num2 = parseInt("10", 8); // 8(按八进制解析)  
  18. var num3 = parseInt("10", 10); // 10(按十进制解析)  
  19. var num4 = parseInt("10", 16); // 16(按十六进制解析)  
  20.   
  21. // parseFloat()  
  22. var num1 = parseFloat("1234hello world");  // 1234  
  23. var num2 = parseFloat("0xA"); // 0   
  24. var num3 = parseFloat("22.5"); // 22.5   
  25. var num4 = parseFloat(22.34.5); // 22.34  
  26. var num5 = parseFloat("0908.5"); // 908.5    
  27. var num6 = parseFloat("3.125e7"); // 31250000  

    5. String

 

    String类型用于表示有零或多个16位Unicode编码组成的字符序列,即字符串。

   

    5.1 字符字面量

  •     \n    // 换行
  •     \t     // 制表
  •     \b    //退格
  •     \r    //回车
  •     \\    //进纸
  •     \'    //单引号(‘)
  •     \"    //双引号(“)
  •     \xnn    //以十六进制代码表示的一个字符
  •     \unnn  //以十六进制代码表示的一个Unicode字符

    5.2 字符串的特点

 

Js代码  javaScript六大数据类型
            
    
    博客分类: javascript javaScriptjsWeb前端 
  1. var lang = "java";  
  2.   
  3. lang = lang + "Script"; // "javaScript"  
  4. lang = lang + 1.8; // "java1.8"  
  5. lang = lang + null; // "javanull"  
  6. lang = lang + undefined; // "javaundefined"  
  7. lang = lang + true; // "javatrue"  

    5.3 转换为字符串

 

    

Js代码  javaScript六大数据类型
            
    
    博客分类: javascript javaScriptjsWeb前端 
  1. var str  = "hello world";  
  2. var num  = 10;  
  3. var bool = true;  
  4. var func = function(){};  
  5. var obj1 = {};  
  6. var obj2 = new Object();  
  7. var arr1 = [];  
  8. var arr2 = ["a","b"];  
  9.   
  10. str.toString();     // "hello world"  
  11. num.toString();     // "10"  
  12. bool.toString();    // "true"  
  13. func.toString();    // "function(){}"  
  14. obj1.toString();    // "[object Object]"  
  15. obj2.toString();    // "[object Object]"  
  16. arr1.toString();    // ""  
  17. arr2.toString();    // "a,c"  
  18.   
  19. var value1 = 10;  
  20. var value2 = true;  
  21. var value3 = null;  
  22. var value4 = ;  
  23.   
  24. String(value1); // "10"  
  25. String(value2); // "true"  
  26. String(value3); // "null"   
  27. String(value4); // "undefined"  

    6.Object

 

    创建Object类型的实例

Js代码  javaScript六大数据类型
            
    
    博客分类: javascript javaScriptjsWeb前端 
  1. // 字面量方法  
  2. var o1 = {};  
  3. // new 操作符创建  
  4. var o2 = new Object();  

    每个Object实例对象都有下列属性和方法:

  •     constructor: 保存着用于创建对象的函数 —— Object()。
  •     hasOwnProperty(propertyName):检车给定的属性是否存在当前对象的实例中(不是原型中)
    Js代码  javaScript六大数据类型
            
    
    博客分类: javascript javaScriptjsWeb前端 
    1. var O = {  
    2.     "name": "zhang san",  
    3.     "age": 25  
    4. };  
    5. O.hasOwnProperty("name");  // true   
  •     isPrototypeOf(object):用于检查一个对象是否存在于另一个对象的原型链上。
    Js代码  javaScript六大数据类型
            
    
    博客分类: javascript javaScriptjsWeb前端 
    1. // 定义函数对象  
    2. function Foo() {}  
    3. function Baz() {}  
    4. // 继承Foo的原型  
    5. Baz.prototype = Object.create(Foo.prototype);  
    6. // 创建一个新对象  
    7. var baz = new Baz();  
    8. // 检查baz是否继承自Foo  
    9. Foo.prototype.isPrototypeOf(baz); // true   
  • propertyIsEnumerable(propertyName):用于检查给定属性是否能用for-in语句来枚举。
    Js代码  javaScript六大数据类型
            
    
    博客分类: javascript javaScriptjsWeb前端 
    1. var o = {};  
    2. var a = [];  
    3. o.prop = 'is enumerable';  
    4. a[0] = 'is enumerable';  
    5.   
    6. o.propertyIsEnumerable('prop');   // true  
    7. a.propertyIsEnumerable(0);    // true  
    8.   
    9. a = ['is enumerable'];  
    10. a.propertyIsEnumerable(0);          // 返回 true  
    11.   
    12. // 内置对象的属性不能被枚举  
    13. Math.propertyIsEnumerable('random');   // 返回 false  
    14.   
    15. /***********************自身属性和继承属性****************************/  
    16. // 自身属性不能被枚举  
    17. var a = ['is enumerable'];  
    18. a.propertyIsEnumerable('constructor') // 返回 false  
    19. a.propertyIsEnumerable('length');   // 返回 false  
    20.   
    21.   
    22. function firstConstructor() {  
    23.   this.property = 'is not enumerable';  
    24. }  
    25.   
    26. firstConstructor.prototype.firstMethod = function() {};  
    27.   
    28. function secondConstructor() {  
    29.   this.method = function method() { return 'is enumerable'; };  
    30. }  
    31.   
    32. secondConstructor.prototype = new firstConstructor;  
    33. secondConstructor.prototype.constructor = secondConstructor;  
    34.   
    35. var o = new secondConstructor();  
    36. o.arbitraryProperty = 'is enumerable';  
    37.   
    38. o.propertyIsEnumerable('arbitraryProperty');   // 返回 true  
    39. o.propertyIsEnumerable('method');              // 返回 true  
    40. o.propertyIsEnumerable('property');            // 返回 false  
    41.   
    42. o.property = 'is enumerable';  
    43.   
    44. o.propertyIsEnumerable('property');            // 返回 true  
    45.   
    46. // 这些返回fasle,是因为,在原型链上propertyIsEnumerable不被考虑  
    47. // (尽管最后两个在for-in循环中可以被循环出来)。  
    48. o.propertyIsEnumerable('prototype');   // 返回 false (根据 JS 1.8.1/FF3.6)  
    49. o.propertyIsEnumerable('constructor'); // 返回 false  
    50. o.propertyIsEnumerable('firstMethod'); // 返回 false   
  • toLocaleString(): 返回调用 toString() 的结果。
  • toString(): 返回对象的字符串表示
  • valueOf():返回对象的字符串,数值或布尔值表示,通常与toString()返回值相同

 

*本文转载自:http://y328771518.iteye.com/blog/2418624