javascript 数据结构和算法读书笔记 > 第一章 javascript的编程环境和模型
1.变量的声明和初始化
必须使用关键字 var,后跟变量名,后面还可以跟一个赋值表达式。
var name;
var age = 5;
var str = 'hello';
var flg = false;
2. javascript 中的算术运算和数学库函数
+(加)
- (减)
*(乘)
/ (除)
%(取余)
可以使用的数学库:
3. 判断结构
1) if else
2) switch
没有特别之处
4.循环结构
1)while
2) for
5. 函数
1)有返回值的
2)无返回值的
6. 变量作用域
变量作用域是指,一个变量在程序的哪些位置可以访问。
javascript中的变量作用域被定义为函数作用域,是指变量的值在定义该变量的函数内是可见的,并且在该函数内的嵌套函数中也可访问该变量。
言外之意就是指javascript中没有块级作用域(通过大括号{}来分割作用域的方式是无效的)。
function showScope(){ // 这里返回的是父级作用域里面的scope的值 return scope; } var scope = "global"; console.info(scope);// global console.info(showScope());// global
上面的showScope中并没有定义scope这个变量,但是调用时依然反悔了global,就是业务在其父级作用域中定义过这个变量,这里将其返回。
function showScope(){ var scope = 'local'; // 在函数自己的作用域内定义scope变量 return scope; } var scope = 'global'; console.info(scope); // global console.info(showScope()); // local
在函数内部自己定义了scope变量,返回时是返回自己作用域中的scope内容,和父级作用域中的同名变量无关。
function showScope(){ scope = 'local'; // 这里是修改了父级作用域中的scope值 return scope; } var scope = 'global'; console.info(scope); // global console.info(showScope()); // local console.info(scope); // global
在函数中没有定义新的scope变量,等于是修改了父级作用域中scope的值,所以在调用了一次showScope方法后,父级作用域中的scope的值也发生了改变。
7. 递归
先来看个求阶乘的函数
function factorial(number) { if (number == 1) { return number; }else { return number * factorial(number- 1); } } console.info(factorial(5));
数字1的阶乘就是1本身,其他情况下都是这个数字number去乘以number-1的阶乘。
我通过自己的递归调用可以一直求到number=1时的阶乘为止, 如所示:
factorial(5) —> 5 * factorial(4) —> 5 * 4 * factorial(3) —> 5 * 4 * 3 * factorial(2) —> 5 * 4 * 3 * 2 * factorial(1) —> 5 * 4 * 3 * 2 * 1
8. 对象和面向对象编程
javascript也是一种面向对象的语言,我们可以定义对象,在其中设定私有、共有属性或方法,如下:
function Person(name, age){ var name = name; // private this.age = age; // public this.getName = function(){ return name; }; }
在Person这个函数中,name为私有属性,在函数外是访问不到的;age为共有属性,其对象可以直接访问;getName()为共有方法,可以通过对象直接访问。
var john = new Person('john', 18); john.age ->18 john.name -> undefined john.getName() -> john
javascript 数据结构和算法读书笔记 > 第一章 javascript的编程环境和模型的更多相关文章
- javascript 数据结构和算法读书笔记 > 第二章 数组
这章主要讲解了数组的工作原理和其适用场景. 定义: 一个存储元素的线性集合,元素可以通过索引来任意存取,索引通常是数字,用来计算元素之间存储位置的偏移量. javascript数组的特殊之处: jav ...
- javascript 数据结构和算法读书笔记 > 第四章 栈
1. 对栈的操作 栈是一种特殊的列表,栈中的元素只能通过列表的一端进行访问,即栈顶.类似于累起一摞的盘子,只能最后被放在上面的,最先能被访问到. 就是我们所说的后入先出(LIFO). 对栈主要有入栈p ...
- javascript 数据结构和算法读书笔记 > 第五章 队列
队列是一种列表,但是它只能够在队尾插入元素,在队首删除元素.队列用于存储按照顺序排列的数据,先进先出.而栈则是后入栈的元素反而被优先处理. 实际中一般被应用在进程池.排队操作上面. 1. 队列的操作 ...
- javascript 数据结构和算法读书笔记 > 第三章 列表
1. 结构分析 列表首先要有以下几个属性: listSize 长度 pos 当前位置 dataStore 数据 我们要通过以下方法对上面三个属性进行操作: length() 获取长度 | getPos ...
- 《javascript权威指南》读书笔记——第一篇
<javascript权威指南>读书笔记——第一篇 金刚 javascript js javascript权威指南 由于最近想系统学习下javascript,所以开始在kindle上看这本 ...
- 为什么我要放弃javaScript数据结构与算法(第十一章)—— 算法模式
本章将会学习递归.动态规划和贪心算法. 第十一章 算法模式 递归 递归是一种解决问题的方法,它解决问题的各个小部分,直到解决最初的大问题.递归通常涉及函数调用自身. 递归函数是像下面能够直接调用自身的 ...
- 为什么我要放弃javaScript数据结构与算法(第七章)—— 字典和散列表
本章学习使用字典和散列表来存储唯一值(不重复的值)的数据结构. 集合.字典和散列表可以存储不重复的值.在集合中,我们感兴趣的是每个值本身,并把它作为主要元素.而字典和散列表中都是用 [键,值]的形式来 ...
- 为什么我要放弃javaScript数据结构与算法(第六章)—— 集合
前面已经学习了数组(列表).栈.队列和链表等顺序数据结构.这一章,我们要学习集合,这是一种不允许值重复的顺序数据结构. 本章可以学习到,如何添加和移除值,如何搜索值是否存在,也可以学习如何进行并集.交 ...
- 为什么我要放弃javaScript数据结构与算法(第五章)—— 链表
这一章你将会学会如何实现和使用链表这种动态的数据结构,这意味着我们可以从中任意添加或移除项,它会按需进行扩张. 本章内容 链表数据结构 向链表添加元素 从链表移除元素 使用 LinkedList 类 ...
随机推荐
- 基本的 html 代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- URL & webkitURL
base64带来的坑 在web中想要是实现图片在线预览的方式有几种 1.先上传 2.使用FileReader对象 3.URL.createObjectURL(file|blob) base64 能将图 ...
- Ubuntu Server 安装部署 Cacti 服务器监控
本文的英文版本链接是 http://xuri.me/2013/10/20/install-the-cacti-server-monitor-on-ubuntu-server.html Cacti是一套 ...
- PHP header() http各种状态码大全查询
PHP header()the function declaration: void header ( string string [, bool replace [, int http_respon ...
- 修改jquery的remote让前段显示服务器错误信息
remote: function (value, element, param) { //param 是你的rules中规定的参数,在这里肯定是remote中的参数了 //value是你输入的值 // ...
- 寒冰王座(hd1248)
寒冰王座 Problem Description 不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票(记住,只有一张钞票),为了防止自己在战斗中频繁的死掉,他决定给自己买一些道具,于是他来到了地精商店 ...
- SQL Server 索引整理与堆重组。
重新组织索引: alter index idx_OrderID on dbo.OrderDetail reorganize | reorganize;---可以rebuild 也可 ...
- linux之SQL语句简明教程---DISTINCT
SELECT 指令让我们能够读取表格中一个或数个栏位的所有资料.这将把所有的资料都抓出,无论资料值有无重复.在资料处理中,我们会经常碰到需要找出表格内的不同资料值的情况.换句话说,我们需要知道这个表格 ...
- Wireshark入门与进阶系列(一)
摘自http://blog.csdn.net/howeverpf/article/details/40687049 Wireshark入门与进阶系列(一) “君子生非异也,善假于物也”---荀子 本文 ...
- 网易云课堂_C++程序设计入门(上)_第5单元:万类霜天竞自由 – 对象和类的更多内容_第5单元作业【4】 - 在线编程(难度:难)
第5单元作业[4] - 在线编程(难度:难) 查看帮助 返回 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系 ...