javascript 数据类型和值(基础版)

  javascript允许使用3种基本数据类型-数字、文本字符和布尔值。此外,它还支持2种小数据类型null(空)和underfined,它们各只定义了一个值。除了这些基本的数据类型外,javascript还支持符合数据类型-对象(object)。javascript还定义了另外一种特殊的对象-函数(function)。除了函数和数组外,javascript语言核心还定义了其他一些专用的对象。这些对象表示不是新的数据类型,而是对象的新的类(class)。Date类定义的是表示日期的对象,RegExp类类定义的是表示正则的表达式对象,Error类定义的是表示javascript程序中发生的语法错误对象。

  数字

  javascript的数字类型不区别整形数值和浮点型数据。(64位浮点数)

  6.02e23 //6.02*10的23次方

  1.4738E-32 //1.4738223*10的负32次方

  javascript是使用语言自身提供的算术运算符来进行数字运算的。这些运算包括(+、-、*、/)

  javascript还使用了一些特殊的数值

    Infinity 表示无穷大的特殊值

    NaN 特殊的非数字值

    Number.Max_VALUE 表示最大的数字

    Number.Min_VALUE  表示最小的数字

    Number.NaN 特殊的非数字值

    Number.POSITIVE_INFINITY 表示正无穷大的特殊值

    Number.NEGATIVE_INFINITY 表示负无穷大的特殊值

  字符串

  字符串(sting)就是由单引号或双引号括起来的Unicode字符序列,其中含有0个或多个Unicode字符。由单引号定界的字符串中可以含有双引号,由双引号定界的字符串中也可以含有单引号。(如果需要在字符串中添加换行符,可以使用/n)

   <a href="contact.html" onclick="alert('test')">1</a>
   <a href="contact.html" onclick='alert("test")'>2</a>

msg="Hello",+"world";//"Hello,world"

  要确定一个字符串的长度,s.length

  要获取字符串最后一个字符。last_char=s.charAt(s.length-1)

  可以从字符串中抽出第二、三、四个字符。sub=s.substing(1,4)

  要从字符串中查找第一个字母“a”的位置 i=s.indexOf('a');

把数字转换为字符串

  如果一个数字用在一字符串连接表达式中,数字就会转换成字符串:var n=100;var s =n+"";

  或者var string_value=string(number);  string_value.toSting();

  var n=17

  binary_string =n.toSring(2);//2进制 10001

  octal_string =n.toSring(8);//8进制 021

  hex_string =n.toSring(16);//16进制 0x11

  toFixed()把一个数字转化为字符串,并且显示小数点后的指定位数。toExponential()使用指数的方法把一个数字转化为字符串。toPrecision()使用指定的有意义的位数来显示仪个数字,如果有意义的位数还不够显示整个整数部分,它就使用指数的表示方法(这3个方法都会四舍五入)

  var n=123456.789

  n.toFixed(0); //123456.789

  n.toFixed(2); //123456.79

  n.toExponential(1);//1.2e+5

  n.toExponential(3);//1.235e+5

  n.toPrecision(4);//1.235e+5

  n.toPrecision(7);//123456.8

把字符串转换为数字

  当一个字符串用于数字环境中,它也会自动转换为一个数字。  var product="21"*"2";

  利用这一优点,我们只要把一个字符串减去0就可以将其转换为一个数字  var number ="21"-0;

  var number =Number("21");这种方法麻烦之处它过于严格。它只对10为基数的数字有效,在紧随数字的字符串中,它不允许出现任何非空字符。要允许更多灵活的转化,可以使用parseInt()和parseFloat()。parseInt()只截取整数。而parseFloat()截取整数和浮点数

  parseInt("3 is int "); //3

  parseInt("12.34 is int "); //12

  parseInt("0xff"); //255

  parseFloat("3.14 is float") // 3.14

  parseInt("11",2); //3 parseInt()还可以指定多一个参数来解析数字的基数

但parseInt()和parseFloat()不能把指定的字符串转换为数字,它就会返回NaN

  parseInt("one"); //NaN

  parseFloat("$72.47"); //NaN

  布尔值

  布尔值数据就只有2个值,这2个合法的值分别由直接量true和false表示。

  布尔值很容易转换,如果一个布尔值用在数值环境中,true就转换为1,而false就会转换为数字0,如果在字符串环境中,true就转换为字符串“true”,而false就转换为字符串“false”。如果一个数字用在一本该布尔值的地方,那么这个数字是0或NaN,它就会转换为false,否则就会为true.如果字符串用在用布尔值的地方,那么空字符串就转化为false,否则就转换为true。空值或未定义的值也会转换为false,而任何的非空对象,数组或函数都转换为true。

  var x=Boolern(x);

  var x= !!1;

  函数

  函数(function)是一个可执行的javascript代码段,由javascript程序定义或由javascript实现预定义。虽然函数只定义一次,但是javascript程序却可以多次执行或调用它。javascript的函数可以带有实质参数或形式参数,用于指定这个函数执行计算要使用一个或多个值,而且它还能返回一个值。

  javascript可以定义和调用函数,代码如下

        function sum(x) {
            return x + x;
        }
        alert(sum(2).toString());

  在很多的语言中,函数只是语言的语法特性,它可以被定义,被调用,但是不是数据类型。但javascript中的函数式真正的数值,这一点给语言带来了很大的灵活性。这意味值函数可以被存储在变量、数组和对象中,而且函数还可以作为参数传递给其他函数。这是非常有用的

  函数直接量是使用关键字function后加可选的函数名、用括号括起来的函数体定义的。

        var sum = function (x) { return x + x };
        alert(sum(1).toString());

   对象

  对象object是已命名数据的集合。这些已命名的数据通常被作为对象属性来引用。要引用一个对象的属性,就必须引用这个对象,在其后加实心点和属性名。如document.write("this a test!");或者document.body.firstChild

  创建对象,对象是通过调用特殊的特殊的构造函数创建的。

  var o =new Object();

  var now =new Date();

  var pattern =new RegExp("\sjava\\s","i");

  一旦创建了属于自己的对象,那么就可以根据自己的意愿设计并使用它的属性了:

  var point= new object()

  point.x =2.3;

  pont.y =1.2;

  javascript定义了对象直接量的语法,从而能够创建对象并定义它的属性。

  var pont={x:2.3,y:-1.2}

  对象直接量也可以嵌套;

  var aaa={bbb:{x:2,y:2},ccc:{x:4,y:4}};

  最后要说明的是,对象直接量中使用的属性值不必是常量,它可以是任意的javascript表达式。另外,对象直接量中的属性名可以是字符串而不是标识符: 

        var user = { "username": "andy",
            "age": 20,
            "info": { "tel": "123456", "cellphone": "98765" },
            "address":
            [
                { "city": "beijing", "postcode": "222333" },
                { "city": "newyork", "postcode": "555666" }
            ]

        }

   这不是Jason吗

   数组

  数组(array)和对象一样是数值的集合。所不同的是,对象中的每个数值都有一个名字,而数组的没一个数字,或者是下标(index)。

  document.images[1].width

  要注意,javascript并不支持多维数组,不过它的数组元素还可以是数组。由于javascript是以中非类型语言,因此数组元素不必具有相同的类型

  可以是用构造函数Array()来创建数组。一旦创建了数组,就可以轻松地给数组任何元素赋值:

  var a =new Array();

  a[0]=1.2;

   a[1]="Javascript"

  a[2]=true;

  a[3]={x:1,y:3}

  数组直接量是在一个封闭方括号中的序列,序列中的元素由逗号分隔。括号内的值将被依次赋值给数组元素,下标值从0开始。

  var a=[1.2 ,"Javascript",true,{x:1,y:3}];

  与对象直接量一样,数组也可以被嵌套:

  var martrix =[[1,2,3],[4,5,6],[7,8,9]];

  而且与对象相同,数组元素中的元素不必仅限于常量,它可以是任意表达式

  var base=1024;

  var table =[base,base+1,base+2,base+3];

  数组直接量中还可以存放没定义元素,只要在逗号之间去掉该元素的值就可以

  var a=[1.2 ,,,{x:1,y:3}];//有2个元素没定义的;

  null

  javascript的关键字null是一个特殊的值,它表示“无值”。null常常被看做对象类型的一个特殊值,代表“无对象”的值。null是一个独一无二的值,有别于其他所有的值。如果一个变量的值为null,那么就说明它的值不是有效的对象、数组、数字、字符串和布尔值。当null用于布尔环境,它转换为false。当它用于数字环境,它转换为0.当它用于一个字符串环境,它转换为“null”.

  underfined

  在使用一个并没声明的变量时,或者使用已经声明但没赋值的变量时,又或者使用一个并不存在的对象属性时,返回underfined。虽然underfined和null值不同,但是==运算却将两者相等。

  当没定义的值用于布尔环境,它会转换为false:用于一个数字环境,它会转换为NaN。当用于字符串环境,它会转换为“undefined”。

原文地址:https://www.cnblogs.com/lgxlsm/p/2820637.html