zoukankan      html  css  js  c++  java
  • JavaScript的数据类型,值和变量

    一、数值型

    1、JavaScript不区分整型和浮点型,所有数值都是浮点型表示,使用IEEE 754标准的64位表示。

    2、整型字面量:十进制:0,12,10000等,十六进制:0xaf01,0XAFFF,八进制:0377(ECMAScript标准不支持,所以不是所有的JS解释器都支持八进制形式的数值字面量,自己写JS代码最好不用这种形式)。

    3、浮点字面量,表示:[digit][.digit][(e|E)[(+|-)]digit],如3.14,.3333,2.1e10,3E-12

    4、算法:操作符(+-*/%),Math提供的一些函数和常量,如Math.pow(), Math.E,Infinity(正无穷),-Infinity(负无穷),正数/0=Infinity,负数/0=-Infinity,0/0=NaN,无穷/无穷=NaN,Math.sqrt(负数)=NaN,3/hello=NaN

    5、判断:isFinite(a)返回true,当且仅当a是数值型并且不是NaN,Infinity,-Infinity当中任何一个;x!=x返回true,当且仅当x为NaN;isNaN(x)当x为NaN或者非数值时(如字符串,对象)也返回true。

    0===-0返回true,但是1/0===1/-0返回false,一个是Infinity,一个是-Infinity;二进制浮点引起的舍入误差:如:var x=0.3-0.2;var y=0.2-0.1;x==y返回false,这种情况会出现在所有已二进制表示浮点数的程序语言中,比如:Java,C,和C++都存在这个情况。

    二、日期时间型

    1、Date构造函数

    var now=new Date();//当前时间 

    var then=new Date(2010,0,1);var later = new Date(2010,1,23,12,34,29);//参数分别为y,m,d,hh24,mm,ss

    var elapsed=later-then;//以毫秒为单位的时间间隔

    2、Date方法:

    later.getFullYear();later.getHours();later.getUTCHours();later.toUTCString();later.toISOString();later.toLocaleDateString();later.toLocaleTimeString();

    三、文本型(字符串型)

    1、JavaScript文本是一个不可变的Unicode字符有序序列,一个Unicode字符用16位表示。JavaScript没有其他语言那种可以表示单个字符的字符类型(Char)。

    2、”“后跟一个或多个特殊字符表示转义,如" "表示 return.  "h":不是转义,此时的将被忽略,所以"h"=="h"返回true。ES5(ECMAScript 5),把""还可以作为换行连接符,把一个字符串分成多行来书写。

    3、文本函数,var s=""I am here!;

    s.length;//返回字符串的长度,也就是包含多少个16位,并不一定是多少个字符,因为有的单个字符会占用2个16位。但是大部分都是16位。

    s.charAt(i);s.substring(s,l);s.slice();s.indexOf();s.lastIndexOf();s.split();s.replace();s.toUpperCase();等等。

    ES5中,可以把字符串当做只读的数组来访问,如:s[0];s[2];//但是这种方式不是所有的浏览器都兼容,比如IE就不行。

    4、模式匹配,JavaScript用包含在两个字符//之间的一串字符表示一个模式匹配,在第二个/字符后还可以跟其他的字符来进一步表示模式的行为。可以在js中直接使用,如

    var pattern=/d+/g;//匹配数字

    var text="testing:1,2,3";

    pattern.test(text);//true

    text.search(pattern);//返回第一个匹配的位置

    text.match(pattern);//返回所有匹配结果的数组。

    四、Boolean

    1、有两个值:true,false。

    2、类型转换:null,undefined,NaN,"",0,-0转换成boolean后值为false,其他所有的值转换为boolean后,值为true。

    五、null和undefined

    1、null,是JS的一个关键字,表示变量为空,缺少值。typeof(null) 返回的是一个object,表示null是一个对象。

    2、undefined,是JS预先定义的一个全局变量,表示值未定义,缺少值,但是和null不同,typeof(undefined)返回的是undefined.

    如果访问一个未初始化的变量,不存在的数组元素(越界)或者对象属性,返回的是undefined。

    没有返回值函数的值返回的也是undefined。调用函数时,没有给函数的参数提供值时,此参数的值为undefined.

    3、虽然null和undefined不同,但是都可以表示缺少值,所以null==undefined返回true,用严格相等运算符返回false:null===undefined

    六、全局对象(global object)

    全局对象在JS解释器启动或者浏览器加载一个新的页面时创建并初始化的,初始化后的全局对象包含一些有用的全局变量,函数,对象,其他JS代码可以使用。

    变量包括:undefined,Infinity,NaN。

    函数包括:parseInt,parseFloat,eval,isNaN。

    构造函数包括:RegExp(),Date(),String(),Object(),Array();

    对象包括:Math,JSON

    在JS顶级代码中(不在JS函数中的代码)可以通过语句var global=this;来引用全局对象。

    其实,用户自定义的全局变量也是作为一个属于保存在全局对象中。

    在客户端JS(浏览器JS)中,一般有个Window对象来表示这个全局对象。

    七、包装对象

    string,boolean,number这三种原始类型(primitive)有对应的包装对象,String,Boolean,Number,所以可以在这些类型的对象上使用方法。

    var s="Good";//typeof(s) returns string

    var S=new String(s);//typeof(S) returns object

    s==S;//return true;

    s===S;//return false;

    八、不可变的原始类型和可变的对象类型

    5种原始类型:null,undefined,number,string,boolean是不可改变的。原始类型的数据的比较是按值比较的,只要值相等,他们就相等。

    对象类型:array,object,function。对象类型的比较不是按值比较的,也就是说,两个数组有相同的元素,他们不一定相等。两个对象有相同的属性也不一定相等。和Java中的引用类型相似。

     
  • 相关阅读:
    基于visual c++之windows核心编程代码分析(33)实现防火墙模型
    基于visual c++之windows核心编程代码分析(31)SNMP协议编程
    未来的职业?
    关于 Delphi 中流的使用(8) 压缩与解压缩的函数
    Delphi 中的 XMLDocument 类详解(2) 记要
    Delphi 中的 XMLDocument 类详解(1) 等待研究的内容
    关于 Delphi 中流的使用(5) 组件序列化
    关于 Delphi 中流的使用(6) 用流读写结构化文件
    xml 语法提示
    关于 Delphi 中流的使用(4) 遍历读取流中的所有数据
  • 原文地址:https://www.cnblogs.com/winson/p/3334583.html
Copyright © 2011-2022 走看看