`
hexh2003
  • 浏览: 7316 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

3.数据类型和值

阅读更多
数据类型:计算机程序是通过操作值来运行的.在一种程序设计语言中,能够表示并操作的值的类型称为数据类型.
而程序设计语言最基本的特征之一就是它支持的数据类型的集合.

JS的3种基本数据类型:数字,字条串,布尔值,
还支持两种小数据类型:null undefined

JS中支持的复合数据类型:对象
  两种:已命名无序,未命名有序(数组)

JS还定义了另一种特殊的对象:函数

3.1 数字
  JS所有的数都是浮点数
 
  3.1.1 整型直接量
    -2^53~2^53超过这个范围就会失去尾数的精确性
    但是在逐位运算符中,是对32位的执行的-2^31~2^31-1
  3.1.2 八进制和十六进制的直接量
    十六进制:0X或0x开头
    八进制:0开头,某些JS支持八进制,但有些不支持,所以最好不要用
  3.1.3 浮点型直接量
    [digits][.digits][(E|e)[(+|-)]digits]
    精确度有限,某些只是近似值
  3.1.4 数字的使用
    Math算术
  3.1.5 数值转换
  3.1.6 特殊的数值
    Infinity,NaN
    Number.MAX_VALUE 最大数字
    Number.MIN_VALUE 最小数字(最接近零的数)
    Number.NaN
    Number.POSITIVE_INFINITY 正无穷大的特殊值
    Number.NEGATIVE_INFINITY 负无穷大的特殊值
 
3.2 字符串
  没有CHAR类型
 
  3.2.1 字符串直接量
  3.2.2 字符串直接量中的转义序列
    \xXX两位十六进制数值XX指定的Latin-1字符
    \uXXXX四位十六进制XXXX指定的Unicode字符
    \XXX 1到3位八进制数指定的Latin-1字符,但ECMAScript v3不支持
   
    不能转义时忽略\
   
  3.2.3 字符串的使用
    last_char=s[s.length-1],用数组的方式把字符读出,但是这不是标准,最好不要使用
  3.2.4 把数字转换为字符串
    方法1. n+'';
    方法2. String(n)
    方法3. n.toString(),同时toString()方法可以有一个参数,来设定转换的基数
   
    小数的转换:
      方法名        是否科学计数法          参数指定什么
      toFixed()          否                小数点后的位数
      toExponential()    是                小数点后的位数
      toPrecision()      够则用            有意义的数字的位数
  3.2.5 把字符串转换为数字
    方法1. s-0;
    方法2. Number(s);
   
    灵活转换:parseInt,parseFloat,从字符串开始处转换(第一个字符不是数字,则返回NaN),可以忽略或舍去非数字及其以后的部分
    parseInt()只截取整数,可以接受一个参数来标明字符串的基数,也可以(以"0x","0X"开头来标明),但是返回相等的十进制的数
    parseFloat()截取整数和浮点数
   
3.3 布尔值
  布尔类型的转换:
    boolean->num   true->1,false->0
    num->boolean 0,NaN->false 其它为true
   
    boolean->string  true->'true',false->'false'
    string->boolean '',undefined->false 其它为true
   
    object->boolean null->false 其它为true
   
    注意它们之间的转换是不可逆的
   
    得到布尔值:
      Boolean(x)或!!x
   
3.4 函数
  函数是一个可执行的JS代码段,由JS程序定义或由JS实现预定义.
  JS中函数不仅是语法特性,还是数据类型,所以函数可以赋给对象的属性,成为对象的方法.
 
  函数定义:
    function square(x){return x*x;}
  函数直接量:
    var square=function(x){return x*x;};
  或
    var square=new Function('x','return x*x;');
   
3.5 对象
  对象是已命名的数据的集合.这些已命名的数据叫对象的属性或域
  引用对象的属性:document.write(1)
  或关联数组引用法:document['write'](1)  (关联数组:数据值和任意的字符串关联起来)
 
  3.5.1 创建对象 
    var point=new Object();
    point.x=1;
    point['y']=2;
  3.5.2 对象直接量
    {K:V,K:V}  K可以是字符串
  3.5.3 对象转换
    object->string  toString()
    object->num   valueOf() 如果不是返回基本类型的值:toString()->num

3.6 数组
  有序的集合.
  JS没有多维数组,但JS支持数组的嵌套
  JS是一种松散类型的语言,所以数组的元素不必具有相同的类型
 
  3.6.1 数组的创建
    var a=new Array();
    a[0]=1;
   
    带参构造:
    new Array(10);创建了一个具有10个未定义元素的数组
  3.6.2 数组直接量
    [a,b,c,,,d],存放了未定义的元素,逗号之间省去该元素就可以了
 
3.7 null
  null通常看作对象类型的特殊值.
 
  null->boolean false
  null->num   0
  null->string 'null'
 
3.8 undefined
  使用未声明的变量,或已声明但未赋值,或不存在的对象属性
  null==undefined-->true,所以区分两者要使用===,typeof
  注意:undefined不是JS的保留字,只是一个全局变量,一个名为undefined的全局变量,其未赋值(未有时,可以自行创建,void运算符也提供了undefined的方法)
  undefined->boolean  false
  undefined->num  NaN
  undefined->string 'undefined'
 
3.9 Date对象
  var now=new Date(); //当前日期和时间
  var xmas=new Date(2007,5,25);
 
3.10 正则表达式
  直接量/  /
  后还可以跟一个或多个字母,改变模式的定义
 
3.11 Error对象
  message属性存放JS实现特定的错误的消息
 
3.12 类型转换小结
          值                  字符串              数字              布尔              对象
      未定义的值          'undefined'             NaN               false             Error
        null                 'null'                0                false             Error
      非空字符串              不变        字符串的数字值或NaN       true              string
      空字符串                不变                 0                false             string
          0                   '0'                不变               false             Number
        NaN                   'NaN'              不变               false             Number
        无穷                'Infinity'           不变               true              Number
        负无穷              '-Infinity'          不变               true              Number
    任意其它的数字          对应字符串           不变               true              Number
        true                  'true'               1                不变              Boolean
        false                 'false'              0                不变              Boolean
        对象                toString()  valueOf()或toString()->num  true              不变

3.13 基本数据类型的包装对象
  string->String
  num->Number
  boolean->Boolean
 
  在应用时他们两者之间几乎不区分(除了eval()),会互相创建瞬态的存在
 
  var num=Object(3);会转化为对应的包装对象

3.14 对象到基本类型的转换
  1.布尔环境:非空对象用在布尔环境中的时候,都转换化true,eg.Boolean(false)对象转换化true
  2.数字环境:先调用对象的valueOf()方法,如果不能返回一个基本类型的值,JS将试图调用对象的toString()方法,并且把结果字符串转化为数字
    特殊:数组对象
      数组的toString()方法[4,5,6]->4,5,6
      []->''->0
      [9]->'9'->9
      ['ss']->'ss'->NaN
      [4,5,'s']->4,5,'s'->NaN
  3.环境不明时:如使用运算符+,比较运算符<,<=等
    先调用对象的valueOf()方法,如果不能返回一个基本类型的值,JS将试图调用对象的toString()方法,得到字符串,对字符串进行比较
    特殊:Date对象
      +时总是执行toString()
      >比较时总是执行valueOf()
     
    注:大多数对象要么没有valueOf()方法,要么没有一个能够返回有用结果的valueOf()方法.
    当把对象和+运算符一起使用的时候,通常会得到字符串的连接
    当把对象和比较运算符一起使用的时候,通常会得到字符串的比较结果
   
  注:valueOf()方法可以自定义,所以得到的结果也是可以改变的

3.15 传值和传址
    复制    (传值)实际复制的是值,存在两个不同的,独立的拷贝
            (传址)复制的只是对数值的引用.如果通过这个新的引用修改了数值,这个改变对最初的引用来说也可见
    传递    (传值)传递给函数的是值的一个独立的拷贝,对它的改变在函数外部没有影响
            (传址)传递给函数的是对数值的一个引用.如果函数通过传递给它的引用修改了数值,这个改变在函数外部也可见
    比较    (传值)比较的是两个独立的值(通常逐字节比较),以判断它们是否相同
            (传址)比较的是两个引用,以判断它们引用的是否是同一个数值.对两个不同的数值的引用不相等,即使这个两个数值是由相同的字节构成的
           
    类型      复制      传递      比较
    数字      传值      传值      传值
    布尔      传值      传值      传值
  字符串      不可变    不可变    传值
    对象      传址      传址      传址
分享到:
评论

相关推荐

    第02章.数据类型和运算符2.pdf

    "数据类型和运算符" 在 Java 编程语言中,数据类型是一种基本概念,指的是变量或表达式的类型。Java 中有多种数据类型,包括整型、浮点型、字符型、布尔型等。在本章中,我们将详细介绍 Java 中的数据类型和运算符...

    【IT十八掌徐培成】Java基础第02天-03.数据类型-强制类型转换.zip

    Java分为两种数据类型:基本数据类型(Primitive Data Types)和引用数据类型(Reference Data Types)。本教程“【IT十八掌徐培成】Java基础第02天-03.数据类型-强制类型转换”主要探讨了Java中的数据类型转换,...

    ActionScript3类型与java数据类型对应表.rar

    - AS3中的基本数据类型包括Number(浮点数)、int(整数)、uint(无符号整数)、String(字符串)、Boolean(布尔值)、Object(对象)、Null和Undefined。 - Java的基本数据类型分为数值类型、字符型和布尔型:...

    python基础1.数据类型与变量.7z

    数据类型与变量.7z"这个压缩包文件显然是为新手设计的,旨在介绍Python编程中最基础但至关重要的概念:数据类型和变量。 在Python中,数据类型是区分不同类型数据的分类。这些数据可以是数字、文本、布尔值或者更...

    C语言数据类型.ppt

    C语言数据类型是指C语言中可以使用的各种数据类型,包括基本类型、构造类型和指针类型。理解数据类型是学习C语言的基础。 一、基本类型 基本类型是C语言中最基本的数据类型,包括整型、实型、字符型、枚举型和空...

    C语言数据类型和变量ppt课件.ppt

    C语言数据类型和变量 C语言中,数据类型和变量是编程的基础概念。数据类型决定了变量的存储空间和取值范围,而变量则是存储器中的一个存储空间,用于存储数据。 1. 数据类型的概念 在数学中,我们对变量的概念有...

    数据元值的数据类型描述规则

    在数据库设计中,数据元值的数据类型描述规则是至关重要的,因为它定义了数据的结构、范围和含义。数据类型不仅影响着数据的存储方式,还影响到查询效率、数据完整性和应用程序的兼容性。以下是对各种常见数据类型的...

    SQLite3中的数据类型

    虽然SQLite3允许不指定列的数据类型,但为了保证数据的一致性和提高查询效率,建议在创建表时明确指定数据类型。这有助于避免因隐式类型转换带来的潜在问题。 综上所述,SQLite3的数据类型系统具有独特的灵活性和...

    VBA数据类型.pdf

    VBA 中有多种数据类型,每种数据类型都有其特定的存储空间和数值范围。了解这些数据类型的特点是编写高效程序的基础。 1. Byte 数据类型 Byte 数据类型占用 1 字节的存储空间,数值范围是 0 到 255。它通常用于存储...

    DatatypesInSQLiteVersion3中文版SQLite3的数据类型.rar

    本资料"DatatypesInSQLiteVersion3中文版SQLite3的数据类型.pdf"将详细介绍SQLite3中的数据类型,帮助你深入理解如何在SQLite3数据库中存储和管理各种数据。 SQLite3的数据类型不同于传统的关系型数据库,如MySQL或...

    西门子TIA博图数据块中数据类型的定义.pdf

    在数据块中,可以定义多种不同的数据类型,这些数据类型包括基本数据类型、复杂数据类型和用户自定义数据类型。 基本数据类型是TIA博图中预定义的一些简单数据类型,如布尔型(BOOL)、整型(INT)、实型(REAL)等...

    C#数据类型简写.rar

    C#中的数据类型分为两大类:基本数据类型和引用数据类型。本篇将深入探讨C#中的数据类型简写,以及如何在多控件编程中有效应用这些简写。 一、基本数据类型 1. 整数类型: - `sbyte`:8位有符号整数,范围是-128到...

    Sqlite3支持的数据类型

    SQLite支持多种数据类型,这些数据类型对于理解和有效地使用SQLite数据库至关重要。下面将详细介绍SQLite3支持的数据类型及其特性。 1. NULL(空值) SQLite中的NULL类型代表一个未知或未定义的值。它不同于其他...

    SQL数据库数据类型说明

    3. 近似数值型数据类型 SQL 数据库中的近似数值型数据类型包括 float 和 real。 * float 数据类型:可以存储从 -1.79E+308 到 1.79E+308 之间的浮点数。 * real 数据类型:可以存储从 -3.40E+38 到 3.40E+38 之间...

    精彩编程与编程技巧-SQL的基本操作(1.数据类型)...

    ### SQL 数据类型详解 ...理解这些数据类型的特点和应用场景对于设计高效、可靠的数据库系统至关重要。合理选择合适的数据类型不仅能够提高数据存储效率,还能提升查询性能,为应用程序提供更好的支持。

    C++数据类型及取值范围

    在C++编程语言中,数据类型是至关重要的概念,它定义了变量的内存大小和能够存储的值的范围。下面将详细阐述C++中的数据类型及其取值范围。 1. **基本数据类型**: - **字符类型(char)**:用于存储单个字符,如...

    SQL数据类型及语句大全

    在SQL(Structured Query Language,结构化查询语言)中,数据类型和语句是构建数据库查询和操作的基础。本文将深入探讨这些关键概念,帮助初学者理解并熟练掌握SQL。 一、SQL数据类型 1. 整数类型:包括TINYINT、...

    opencv数据类型.docx

    了解 OpenCV 的数据类型是进行图像处理和分析的基础,本文将对 OpenCV 的数据类型进行详细的介绍。 结构类型数据类型 在 OpenCV 中,结构类型数据类型是指由多个基本类型组成的复杂数据类型。这些数据类型可以是单...

    MySQL常用数据类型.pdf

    MySQL数据库中数据类型是定义列中可以存储什么类型的数据以及该数据的格式等属性的关键特性。...综上所述,了解和正确使用MySQL中的数据类型,对于数据库的性能优化、数据的准确性和管理的便利性都有重大影响。

Global site tag (gtag.js) - Google Analytics