文档章节

JavaScript 数据类型、数组、循环及条件表达式

大雄小熊
 大雄小熊
发布于 2013/08/12 13:35
字数 2579
阅读 115
收藏 0

数据类型、数组、循环及条件表达式

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. 注释

//单行注释

/**/多行注释


© 著作权归作者所有

大雄小熊
粉丝 1
博文 11
码字总数 28160
作品 0
闸北
程序员
私信 提问
JavaScript的简单复习

JavaScript的简单复习 JS的两种加载方式: 1.内部加载 内部加载,写在<script>标签内部 2.外部加载 写在<script>的src目录中,使用外部加载js文件的时候,js解析引擎不解析script标签体中的代码...

Lunqi
2015/08/07
65
0
Python全栈 Web(JavaScript 函数、数组)

循环: for循环 简化版while循环 语法: for(表达式1;表达式2;表达式3) { 循环体 } 表达式1:循环条件初始化 表达式2:循环终止条件 表达式3:更新循环条件 流程: 1.先执行表达式1 声明条...

巴黎香榭
2018/09/11
0
0
重学js之JavaScript基本概念(下)=> 运算符

注意: 本文章为 《重学js之JavaScript高级程序设计》系列第三章第三部分【运算符】。 关于《重学js之JavaScript高级程序设计》是重新回顾js基础的学习。 1. 布尔操作符 布尔操作符的重要性堪...

故事胶片
07/08
0
0
【前端性能优化】高性能JavaScript读书笔记

序 曾经看过一篇文章,有一句话这样说: 只有在大学的图书馆里,你才能真正赚回你交的学费。 临近毕业,还想再去图书馆多转转。偶然在架子上发现了这本书,一看作者是写大名鼎鼎的红宝书的人...

番茄沙司
03/22
0
0
三刷 JavaScript 高级程序设计,拾起曾经遗忘的基础 -其一

前言 正如标题所说,这是我第三次翻开红宝书也就是《 JavaScript 高级程序设计第三版》,不得不说,虽然书有一些年份,很多知识点也不适合现代的前端开发,但是对于想要掌握 JavaScript 基础...

yeyan1996
07/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

实战项目-学成在线(一)

之前看的黑马程序员实战项目之一,打算以博客的形式写出来,也让自己重新温习一下。 1、项目背景 略(就是当前这东西很火,我们重点在开发,这些就略过) 2、功能模块 门户,学习中心,教学管...

lianbang_W
18分钟前
1
0
基于Vue的数字输入框组件开发

本文转载于:专业的前端网站➫基于Vue的数字输入框组件开发 1、概述 Vue组件开发的API:props、events和slots 2、组件代码 github地址:https://github.com/MengFangui/VueInputNumber 效果:...

前端老手
26分钟前
2
0
百度地图根据经纬度获取运动轨迹

<!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="initial-scale=1.0, user-scalable=n......

泉天下
28分钟前
4
0
学习记录(day04-axios增删改查、v-for循环、页面加载成功处理函数)

[TOC] 1.1 基本语法:插值表达式 <template> <div> {{username}} <br/> {{1+2+3}} <br/> {{'你的名字是:' + username}} <br/> {{'abc'.split('')}} </div><......

庭前云落
今天
3
0
CentOS Linux 7上将ISO映像文件写成可启动U盘

如今,电脑基本上都支持U盘启动,所以,可以将ISO文件写到U盘上,用来启动并安装操作系统。 我想将一个CentOS Linux 7的ISO映像文件写到U盘上,在CentOS Linux 7操作系统上,执行如下命令: ...

大别阿郎
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部