值:计算机程序的运行需要对值(value)进行操作。
数据类型:能够表示并操作的类型称作数据类型(type)。
变量:当程序需要把值保存起来以备将来使用时,便将其赋值给一个变量。
变量是一个值得符号名称,可以通过名称来获得对值得引用。
javaScript变量是无类型的,可以被赋予任何类型的值。使用var来声明变量。
javaScript采用词法作用域。在函数内声明的变量具有函数作用域,并且只在函数内部可见。不在任何函数内声明的变量称为全局变量,它在javaScript程序中的任何地方都是可见的。
javaScript的数据类型分为两类:原始类型和对象类型。
原始类型:javaScript中的原始类型包含数字、字符串和布尔值。javaScript中还包含2个特殊的原始值null、undefined
对象类型:javaScript中除了数字、字符串、布尔值、null、undefined就是对象了。
对象是属性的集合,每个属性都是由“名值对”(值可以是原始值,也可以是对象)构成。其中有一个特殊的对象-------全局对象。
数组:javaScript同时定义了一种特殊的对象-----------数组,表示带编号的值得有序集合。(拥有与普通对象不同的行为特征)
函数:javaScript还定义了另一种特殊的对象-----------函数。函数是具有与它相关联的可执行代码的对象,通过调用函数来运行可执行代码,并返回运算结果。(也拥有与普通对象不同的行为特征)
构造函数:如果函数用来初始化(使用new运算符)一个新建的对象,称之为构造函数。每个构造函数定义了一个类对象。
类对象:由构造函数初始化的对象组成的集合。类可以看作是对象类型的子类型。除了数组类(Array)和函数类(Function)之外,javaScript语言核心还定义了其他三种有用的 类。日期类(Date)定义了代表日期的对象。正则类(RegExp)定义了表示正则表达式的对象。错误类(Error)定义了哪些表示javaScript程序中运行时错误和语法错误的对 象。可以通过定义自己的构造函数来定义需要的类。
3.1数字
和其他变成语言不同,javaScript不区分整数值和浮点数值。javaScript中的所有数字都用浮点数值表示。
3.1.1整数直接量
javaScript中用一个数字序列表示一个十进制整数。
javaScirpt也支持16进制的直接量。以0X开头。如0xff
javaScript也支持8进制的直接量。以0开头,但有的实现不支持。如0377
3.1.2浮点型直接量
可以含有小数点。
3.1.3javaScript中的算术运算
支持基本运算:+、-、*、/、%
除了基本运算,javaScript还支持更加复杂的运算,这些复杂运算通过Math对象的属性定义的函数和常量来实现。
javaScript在溢出、下溢、被0除时不会报错。
Infinity和NaN:javaScript预定义了全局变量Ifinity和NaN表示正无穷大和非数字。
溢出:当运算的结果无穷大,超出javaScript的上限,返回infinity(无穷大)。
下溢:当运算的结果无限接近于零,比javaScript能表示的最小值还小,javaScript会返回0。当一个负数发生下溢时,javaScript返回负零。
被0除返回正无穷大infinity或负无穷大-infinity。
0除以0,无意义,返回NaN。表示非数字。
与非数字和无法转为数字进行运算时,都返回NaN。
NaN和任何值都不相对,包括自身。可以用isNaN()来判断是否是NaN。
isFinite(),在参数不是NaN,Infinity,-Infinity的时候返回true.
负零值和正零值是相等的。这2个值几乎是一模一样的,除了作为除数之外。
正无穷大和负无穷大不等。
3.1.4二进制浮点数和四舍五入错误
二进制不能精确的表示0.1。货币计算选用大整数在计算。
3.1.5日期和时间
Date()构造函数来创建时间和日期对象。
3.2文本
字符串是16位值组成的不可变的有序序列。
javaScript通过字符串表示文本。
3.2.2转义字符
\转义符号
3.2.4模式匹配
RegExp()构造函数用来创建文本匹配模式的对象。这些模式成为正则表达式。String和RegExp 都定义了利用正则表达式进行模式匹配和查找与替换的函数。
3.3布尔值
布尔值只有2个值,true和false
任意javaScript值都可以转为布尔值。下面这些值会被转换成false:undefined ,null ,0 ,-0 ,NaN, " "
其他所有值,包括所有对象(数组)都会转换成true。
布尔运算符:&&,||,!
3.4null和undifined