数据类型:计算机程序是通过操作值来运行的.在一种程序设计语言中,能够表示并操作的值的类型称为数据类型.
而程序设计语言最基本的特征之一就是它支持的数据类型的集合.
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 传值和传址
复制 (传值)实际复制的是值,存在两个不同的,独立的拷贝
(传址)复制的只是对数值的引用.如果通过这个新的引用修改了数值,这个改变对最初的引用来说也可见
传递 (传值)传递给函数的是值的一个独立的拷贝,对它的改变在函数外部没有影响
(传址)传递给函数的是对数值的一个引用.如果函数通过传递给它的引用修改了数值,这个改变在函数外部也可见
比较 (传值)比较的是两个独立的值(通常逐字节比较),以判断它们是否相同
(传址)比较的是两个引用,以判断它们引用的是否是同一个数值.对两个不同的数值的引用不相等,即使这个两个数值是由相同的字节构成的
类型 复制 传递 比较
数字 传值 传值 传值
布尔 传值 传值 传值
字符串 不可变 不可变 传值
对象 传址 传址 传址
分享到:
相关推荐
2.数据类型检查:检查数据类型,确保 '总分' 列是数值类型,如果不是,则进行转换。 3.缺失值处理:将 '升/降' 列的缺失值填充为 0,并检查其他列的缺失值。 数据分析 1.排名未改变的学校:统计排名未改变(升/降为0...
Java分为两种数据类型:基本数据类型(Primitive Data Types)和引用数据类型(Reference Data Types)。本教程“【IT十八掌徐培成】Java基础第02天-03.数据类型-强制类型转换”主要探讨了Java中的数据类型转换,...
- AS3中的基本数据类型包括Number(浮点数)、int(整数)、uint(无符号整数)、String(字符串)、Boolean(布尔值)、Object(对象)、Null和Undefined。 - Java的基本数据类型分为数值类型、字符型和布尔型:...
数据类型与变量.7z"这个压缩包文件显然是为新手设计的,旨在介绍Python编程中最基础但至关重要的概念:数据类型和变量。 在Python中,数据类型是区分不同类型数据的分类。这些数据可以是数字、文本、布尔值或者更...
Redis 数据类型之 List 类型 Redis 中的 List 类型是一种链表结构,主要功能是 push、pop、获取一个范围的所有值等等。List 类型的操作中,key 理解为链表的名字。Redis 的 List 类型其实就是一个每个子元素都是 ...
C语言数据类型是指C语言中可以使用的各种数据类型,包括基本类型、构造类型和指针类型。理解数据类型是学习C语言的基础。 一、基本类型 基本类型是C语言中最基本的数据类型,包括整型、实型、字符型、枚举型和空...
C语言数据类型和变量 C语言中,数据类型和变量是编程的基础概念。数据类型决定了变量的存储空间和取值范围,而变量则是存储器中的一个存储空间,用于存储数据。 1. 数据类型的概念 在数学中,我们对变量的概念有...
在数据库设计中,数据元值的数据类型描述规则是至关重要的,因为它定义了数据的结构、范围和含义。数据类型不仅影响着数据的存储方式,还影响到查询效率、数据完整性和应用程序的兼容性。以下是对各种常见数据类型的...
虽然SQLite3允许不指定列的数据类型,但为了保证数据的一致性和提高查询效率,建议在创建表时明确指定数据类型。这有助于避免因隐式类型转换带来的潜在问题。 综上所述,SQLite3的数据类型系统具有独特的灵活性和...
VBA 中有多种数据类型,每种数据类型都有其特定的存储空间和数值范围。了解这些数据类型的特点是编写高效程序的基础。 1. Byte 数据类型 Byte 数据类型占用 1 字节的存储空间,数值范围是 0 到 255。它通常用于存储...
本资料"DatatypesInSQLiteVersion3中文版SQLite3的数据类型.pdf"将详细介绍SQLite3中的数据类型,帮助你深入理解如何在SQLite3数据库中存储和管理各种数据。 SQLite3的数据类型不同于传统的关系型数据库,如MySQL或...
在数据块中,可以定义多种不同的数据类型,这些数据类型包括基本数据类型、复杂数据类型和用户自定义数据类型。 基本数据类型是TIA博图中预定义的一些简单数据类型,如布尔型(BOOL)、整型(INT)、实型(REAL)等...
SQLite支持多种数据类型,这些数据类型对于理解和有效地使用SQLite数据库至关重要。下面将详细介绍SQLite3支持的数据类型及其特性。 1. NULL(空值) SQLite中的NULL类型代表一个未知或未定义的值。它不同于其他...
3. 近似数值型数据类型 SQL 数据库中的近似数值型数据类型包括 float 和 real。 * float 数据类型:可以存储从 -1.79E+308 到 1.79E+308 之间的浮点数。 * real 数据类型:可以存储从 -3.40E+38 到 3.40E+38 之间...
### SQL 数据类型详解 ...理解这些数据类型的特点和应用场景对于设计高效、可靠的数据库系统至关重要。合理选择合适的数据类型不仅能够提高数据存储效率,还能提升查询性能,为应用程序提供更好的支持。
在数据库设计与管理中,理解并熟练掌握数据类型至关重要,因为它们直接影响到数据存储的效率、安全性和查询性能。SQL Server 提供了丰富的内置数据类型,同时也支持用户根据特定需求自定义数据类型。本文将深入探讨...
在C++编程语言中,数据类型是至关重要的概念,它定义了变量的内存大小和能够存储的值的范围。下面将详细阐述C++中的数据类型及其取值范围。 1. **基本数据类型**: - **字符类型(char)**:用于存储单个字符,如...
在SQL(Structured Query Language,结构化查询语言)中,数据类型和语句是构建数据库查询和操作的基础。本文将深入探讨这些关键概念,帮助初学者理解并熟练掌握SQL。 一、SQL数据类型 1. 整数类型:包括TINYINT、...
了解 OpenCV 的数据类型是进行图像处理和分析的基础,本文将对 OpenCV 的数据类型进行详细的介绍。 结构类型数据类型 在 OpenCV 中,结构类型数据类型是指由多个基本类型组成的复杂数据类型。这些数据类型可以是单...
MySQL数据库中数据类型是定义列中可以存储什么类型的数据以及该数据的格式等属性的关键特性。...综上所述,了解和正确使用MySQL中的数据类型,对于数据库的性能优化、数据的准确性和管理的便利性都有重大影响。