JavaScript 编程精解 (2)

第二章 程序结构

2.1 表达式和语句

表达式:产生值的操作的代码片段。

语句:表达式 + 分号 = 一条语句,在掌握何时省略语句结尾的分号以前,应遵循以分号为结尾的规则。

// 这样的表达式不对外界产生任何影响
// 一条语句只有对外部产生影响才有意义
1;
!false;

2.2 变量

可以使用任意不是关键字的单词作为变量名,变量名可以包含数字(不能以数字开头)、字母、下划线,除了$和_字符以外,不能包含其他任何标点符号。

可以将变量想象为许多的触须,而不是一个箱子。

  1. 变量并不包含值,而是会引用这些值

  2. 两个不同的变量可以引用同一个值

  3. 程序只能访问仍被引用的值

  4. 当需要保存一些状态的时候,可以生出一条新触须或者伸出一条触须,将其指向某个值

  5. 空变量的值就是没有指向的触须,结果为undefined

// 一条语句可以定义多个变量
var a = 1, b = 2;
console.log(a + b);
// 3

2.3 关键字和保留字

关键字:具有特殊含义的单词

保留字:官方不允许将其作为变量名的单词

部分关键字和保留字列表:

break case catch continue debugger default delete
do else false finally for function if implements
in instanceof interface let new null package private
protected public return static switch throw true
try typeof var void while yield this

2.4 环境

给定时间内的变量和变量值的集合

2.5 函数

函数:包装在变量中的一段程序

执行函数的操作称为调用或者应用

传递给函数的值称为参数

2.6 console.log函数

console.log不是一个简单的变量,其实是一个表达式,从console变量中获取了其内部含有的log属性。

2.7 返回值

我们把函数生成值的操作称之为返回值。在JavaScript中,任何生成值的表达式都可以嵌套在另一个作用域更大的表达式当中。

console.log(Math.min(2, 4) + 100);
// 102

2.8 promptconfirm 函数

alert之外,浏览器环境中还包含了其他几个用于弹出窗口的函数

// confirm来询问用户是非性问题,返回true或false
confirm('Are you ok ?');

// prompt询问开放式问题,第一个参数是问题,第二个参数是缺省文本信息
// 用户输入信息以字符串的形式返回
prompt('Are you ok ?', '...');

现代Web编程中很少使用这两个函数,主要原因是无法对弹出窗口的风格进行控制。

2.9 控制流

顺序执行流:如果程序中包含了不止一条语句,那么这些语句一定是按照自上而下的顺序执行的。

var a = 1;
console.log(a);
// 1

2.10 条件执行

条件执行流:通过布尔值判断,选择不同的路径执行语句。

var a = 1;
if (!isNaN(a)) {
    console.log(a);
} else {
    colsole.log('Not a number');
}

2.11 whiledo 循环

循环控制流:重复执行某些代码的方法。

// while循环
while (...) {
    //todo
}

// do循环
do {
    //todo
} while (...)

2.12 代码缩进

缩进代码的作用:凸显出代码结构.

谁都不想阅读面条式代码不是吗?

2.13 for循环

while的不同在于,for将所有与循环状态相关的语句放在了一起。

// for循环
for (...) {
    //todo
}

2.14 跳出循环

  1. 循环条件为false

  2. break语句

  3. continue语句,与break类似,可以跳出当前循环体,并进入下一轮循环迭代。

for (var current = 20; ; current++) {
    if(current % 7 == 0) {
        break;
    }
}
console.log(current);
// 21

2.15更新变量的简便方法

  • ++
  • --
  • +=
  • -=
  • *=
  • /=

2.16 switch分支

switch语句的设计初衷就是为了解决多条件分支的问题,令人尴尬的是,在JavaScript中,if编写的条件分支反而看起来更好。

//switch语法
switch (...) {
    case 'condition1':
      //todo
      break;
    case 'condition2':
      //todo
    ...
    default:
      //todo
      break;
}

一旦开始执行某个case标签下的语句,就会一直执行下去,直到遇到break为止。

2.17 大写

变量名中不能含有空格,但使用多个单词有助于清晰表达变量用途。随之也出现了很多书写方式:

var fuzzylittleturtle;    // 不好的命名
var fuzzy_little_turtle;  // 比较好的命名
var FuzzyLittleTurtle;    // 不好的命名
var fuzzyLittleTurtle;    // 好的命名,驼峰命名法,一般都遵循这种风格

极少数情况下,变量名首字母也会大写,比如Number函数。这种方式表示该函数是构造函数

2.18 注释

什么时候需要注释:

  1. 哪怕代码结构很清晰,阅读者(包括作者)很难只通过纯粹的代码来读懂程序包含的全部信息。

  2. 代码中包含的信息晦涩难懂,阅读者无法理解其中含义

  3. 将想法记录在程序中,或对开发尚未完成的部分做标记

// 单行注释
/*
多行注释
*/

2.19 本章小结

  1. 程序由语句构成,每条语句又有可能包含了更多的语句。语句中往往包含表达式,表达式又可以由更小的表达式组成。

  2. 程序中语句从上到下执行,可以使用条件语句(if、else 和 switch)或循环语句(while、do 和 for)来改变程序控制流

  3. 变量可以用来保存任何数据,并用一个变量名对其引用。环境是一组定义好的变量集合。JavaScript运行环境中总会包含一系列有用的标准变量。

  4. 函数是一种特殊的值,用于封装一段程序。可以通过funcrtionName(parameter1, parameter2这种写法来调用函数。函数调用可以是一个表达式,也可以是一个值。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容