数据类型、数组、循环及条件表达式
1.变量
通常,变量都是用来存储数据的。之所以把它们称为变量,是因为初始化后,它们所存储的值仍然是可以改变的。变量名严格区分大小写。
变更的使用通常分为两个步骤:
声明变量 变量名可以同任何数字、字母、下划线组成,不能以数字开头。使用var关键字。可以同时声明多个变量,用逗号“,”隔开。
初始化变量 实际就是指变量首次被赋值的时机。
先声明变量,然后再赋值
声明变量与初始化同步进行。
第二次设置变量时就不需要用var关键字了
2.操作符
所谓操作符,通常指的是能对一两个输入值执行某种操作,并返回结果的符号。
例:>>>1 + 2
3
l + 是一个操作符
l 该操作是一次加法运算
l 输入值是1和2(输入值也叫做操作数)
l 结果值为3
常用的操作符有 + - * / % ++ -- = += -= *= /= %=
3.基本数据类型
数字—— 包括浮点与整数
字符串—— 一序列由任意数量的字符组成的序列,需要用单号或又引号包起来。
布尔值—— true 或 false
undefined—— 当我们访问一个不存在的变量时,就会得到一个undefined。除此之外,使用一个未初始化的变量也会如此。因为JavaScript会将变量在初始化之前的值设置为undefined。
null—— 这是另一种只包含特殊值的特殊数据类型。所谓的null值,通常是指没有值、空值,不代表任何东西。
null 与 undefined 的最大不同在于,被赋予null的变量是被认为是已经定义了的,只不过它不代表任何东西。
l 基本类型(上面列出的五种类型)
l 非基本类型()即对象
l 任何不属于上述5种基本类型的值都被认为是对象
3.1查看数据类型的操作符——typeof
typeof 返回值有number string Boolean undefined object function
3.2数字 typeof返回number
整数:
十进制 这个我不懂。你们懂。
八进制 第一个数字以0开头
十六进制 以0x开头
指数表示法
1e+1 1E1 1E+1 在数字的后面加一个零
1e+2 1E2 1E+2 也可理解为小数点向右移两位
1e-1 小数点向左移1位
Infinity -Infinity 正无穷和负无穷
实践证明,JavaScript能处理的值的最范围是:
5e-324 ~1.7976931348623157e+308
l 大于这个范围值就是 Infinity
l 小于这个范围的值就量 -Infinity
l 任何数除0也是 Infinity
l Infinity 与 –Infinity 相加得到的是NaN
l Infinity与其它任何操作数的运算结果都是Infinity
NaN 不是一个数字
尽管它的名字叫做“不是一个数字”,但是它依然属于数字,只不过是一种特殊的数字罢了。
l infinity与infinity的运算结果会产生一个NaN。
l 如果我们在对一个假定的数字执行某个操作失败,就会得到一个NaN。例:var a = 10 * ‘f’;
l NaN是具有传染性的,只要运算中有一个NaN,整个运算就会失败。其值就变成了NaN
浮点:这个我就不介绍了,它就是小数。我只想告诉大家,小数不精确,不要用小数来进行运算。
例:var a = 0.1+0.2;
if(a == 0.3){
alert(‘true’);
}else{
alert(‘false’);
}
3.3 字符串 typeof 返回string
字符串通常指的是一组用于表示文本的字符序列。在JavaScript中,一对双引号或单引号之间的任何值都会被视为一个字符串。
l 1是一个数字,但”1”就是一个字符串。
l 引号中没有任何东西的时候是一个空字符串
字符串的转换:
当我们将一个数字字符串用于自述运算中的时候,该字符串就会当作数字类型来使用。(由于加法运算符的特殊性,这个不适用于加法运算符)
n 将字符串转换为数字有一个偷懒的办法,就是将这个字符串与1相乘即可。如果转换失败将回得到一个NaN。
n 将其它类型转换为字符串也有一个偷懒办法,只需要将其与空字符串连接起来即可。
特殊字符串
\
\n
\r
\t
\f
\v
\’
\”
3.4 布尔值
布尔类型只有两个值:true 和 false
l 如果true 和 false 放在引号内就是字符串
逻辑运算符,在JavaScript 中主要有三种逻辑运算符,它们都是布尔运算。
!—— 逻辑非(取反)
&& —— 逻辑与
|| —— 逻辑或
惰性示值:JavaScript 引擎偷懒
var result = true || fase || true || false
alert(true); //true
//偷懒
var a = 5;
true || (a=6)
alert(a); //5
//不偷懒
var b = 5;
true && (b=6)
alert(b); //6
JavaScript 引擎在一个逻辑表达式中遇到一个非布尔型的操作数时,那么这个操作数的值就会成为该表达式所返回的结果。
l 双重取反可以将任何值转换为等效的布尔值。
以下情况将会转换为布尔的false
n 空字符串””
n null
n 数字0
n 数字NaN
n 布尔值false
操作符的优先级
+ - * / (先乘除,后加减)
! && ||
改变优先级,请使用() 学习了() 其它的什么优先级的问题就不用再学了。
比较运算符:返回的也是布尔值
==
===
!=
!==
>
>=
<
<=
值得注意的是:NaN不属性任何东西,包括它自己
>>> NaN == NaN
false
undefined 与 null
通常情况下,访问某个不存在的或没有赋值的变量时,返回undefined值。
>>> foo
foo is not defined
>>> typeof foo
undefined
>>> var foo;
>>> foo;
>>> typeof foo;
undefined
null值就完全是另一回事了,它不能通过JavaScript来自动赋值,只能通过我们的代码手动来完成。
>>> var foo = null;
>>> foo;
null
>>> typeof foo;
Object
undefined 和 null参加运算时的差别
>>> var i = 1 + undefined; i;
NaN
>>> var I = 1 + null; i;
1
undefined 和 null 转换为其它数据类型时的区别:
//转换为数字
>>> 1 * undefined;
NaN
>>> 1 * null;
0
//转换为布尔
>>> !!undefined;
false
>>> !!null
false
//转换为字符串
>>> “” + null;
“null”
>>> “” + undefined;
“undefined”
4.基本数据类型综述
4.1 JavaScript语言中的五大数据类型
l 数字
l 字符串
l 布尔
l undefined
l null
4.2 任何不属于基本类型的东西都是对象
4.3 数字类型的数据包括:正负整数、浮点数、十六进制数、八进制数、指数及特殊值NaN、Infinity、-Infinity
4.4 字符串类型存储的是一对引号之间的所有字符
4.5 布尔类型只有两个值:true和 false
4.6 null类型只有一值null
4.7 undefined类型只有一个值undefined
4.8 绝大部分值在转换为布尔的时候都为true,但以下6种情况转换为false:
l “”
l null
l undefined
l 0
l NaN
l false
5.数组
声明一个数组用一对方括号[]
var a = [] //声明了一个空数组
var a = [1,2,3] //声明了一个三个元素的数组
什么是数组?咧?
数组就是一组数。是一个用于存储数据的列表。与一次只能存储一个值的变量不同,我们可以用数组来存储任意数量的元素。
JavaScript 中只有索引数组,没有关联数组。切记。索引从0开始编号。
增加、更新数组元素
//更新
var a = [1,2,3];
a[2] = ‘three’;
document.write(a); //1,2,three
//增加
var b = [‘a’,’b’,’c’];
b[3] = ‘d’;
document.write(b); //’a’,’b’,’c’,’d’
b[5] = ‘e’;
document.write(b); //’a’,’b’,’c’,’d’,undefined,’e’
删除数组
为了删除特定的元素,我们需要用到delete操作符,该操作符不能真正的将元素移出,而是将其值设定为undefined。元素被删除后,数组的长度不会受到影响。
var a = [1,2,3];
delete a[1];
document.write(a); //1,,3
数组的数组
通常情况下,我们可以在数组中存放任何类型的值,包括另一个数组。
var a = [1, ’two’, false, null, undefined];
document.write(a); //1, ’two’, false, null, undefined
a[5] = [1, 2, 3]
document.write(a); //1, ’two’, false, null, undefined, [1, 2, 3]
//访问上面的数组中的最后一个元素的值
document.write(a[5][2]); //3
值得注意的是:也可以通过下标的形式来访问字符串中的某一个字符。
数组总结:
l 数组是一种数据存储形式
l 数组元素是可以被索引的
l 数组中的元素索引是从0开始的,并且按照每个元素位置依次递增
l 我们是通过方括号中的索引值来访问数组元素的。
l 数组能存储任何类型的数据,包括另一个数组。
6.条件与循环
n if条件表达式 if-else if-else if-else
else if间一定要有空格
n switch语句
一定要有break;语句。没有代码会向下执行,直到遇到break才会停止执行。
n while() do-while() for() for-in
6.1 检查变量是否存在
var result = ‘’;
if(somevar){
result = ‘yes’;
}
document.write(result);
//更好的做法是
if(typeof somevar !== ‘undefined’){
result = ‘yes’;
}
document.write(result);
6.2 替代if表达式
var a = 1;
var result = (a === 1) ? “存在” : “不存在”; //也称为三元运算符
6.3 switch语句
假如有太多的if else if else的时候,我们就用switch语句来代替
switch语句的执行应该可以分为以下几个步骤:
1. 对switch后面的()中的的内容进行求值,并记录结果
2. 移动到第一个case块,将它与步骤1的结果进行对比。如果比对结果为true,则执行case块中的代码。
3. 相关case块执行完成后,如果遇到break语句就直接退出switch。
4. 如果没有遇到break或步骤2中的比对结果为false,就继续下一个case块。
5. 如果依然还没有结束,就执行default语句后的代码块。
6.4 循环
while() do-while() for() for-in
用来遍历数组(或对象)中的元素。
var a = [1,2,3,4,5,6,7];
for(var i in a){
document.write(‘第’+(1+i)+’个元素为:’+a[i]+’<br >’);
}
7. 注释
//单行注释
/**/多行注释