第一章 JavaScript的编程环境和模型
1.1 JavaScript环境
- JavaScript原来只能再浏览器上运行,现在可以作为桌面程序执行,或者在服务器上执行。
- 本书使用的是JavaScript shell,由Mozilla提供的JavaScript综合编程环境SpiderMonkey的一部分
说明:- 在计算机科学中,shell俗称壳,是指为使用者提供操作界面的软件(命令解析器)。它接收用户命令,然后调用相应的应用程序。
- 我的理解是:shell是用户与计算机系统交互的中介。像鸡蛋壳一样,壳的内部是核心。
1.2 JavaScript编程实践
1.2.1 声明和初始化变量
- JavaScript变量默认是全局变量,如果对一个未声明的变量直接赋值,该变量会成为全局变量。
- 为了养成良好的编码习惯,使用变量前必须要先声明!
- 下面是一些声明变量的例子:
var number;
var name;
var rate = 1.2;
var greeting = "Hello, world!";
var flag = false;
1.2.2 JavaScript中的算术运算符和数学库函数
-
JavaScript使用标准的算术运算符:
+(加)、-(减)、*(乘)、/(除)、%(取余)说明:
-
Js中的除法运算并不会像其他语言一样:两个整数作 / 运算就能取整。它是正常的除法运算!
比如说:5 / 3的结果是 1.666666666666666666667 -
Js的减法运算中,如果存在借位的情况,运算结果会出现误差。
比如说:3 - 2.1的结果是 0.899999999999999999999
-
-
Js的数学库也就是Math对象中有很多数学运算的方法。
比如:
* Math.abs(x) 返回数的绝对值
* Math.floor(x) 向下舍入
* Math.pow(x,y) 返回x的y次幂
1.2.3 判断结构
if语句和switch语句
1.2.4 循环结构
while循环和for循环
1.2.5 函数
Js提供两种定义函数的方式,一种有返回值,一种没有返回值(这种函数有时也叫做子程或void函数)
1.2.6 变量作用域
- 变量的作用域是指变量在程序的哪些地方可以访问。
- Js的作用域是函数作用域
函数内定义的变量只能在函数内可见;
函数外定义的变量全局可见(拥有全局作用域)
说明:
Js中没有块级作用域,所以在for循环中的定义的变量其实属于全局变量!for(var i = 1;i < 10; i++){ } console.log(i) //输出 i = 10
1.2.7 递归
function factorial(number){
if(number == 1){
return number;
}else{
return number * factorial(number - 1)
}
}
console.log(factorial(5))
//输出结果为 120
递归调用的原理是:当一个函数被递归调用时,在递归没有完成时,函数的计算结果暂时被挂起。是一个入栈、出栈的过程。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cnHdoMZ9-1582861565157)(en-resource://database/1294:0)]
说明:
有的递归深度超出了JavaScript的处理能力,这个时候我们就需要寻找迭代式的解决方案了。
任何可以被递归定义的函数,都可以被改写成迭代式的程序。
1.3 对象和面向对象编程
对象通过如下方式创建:定义包含属性和方法声明的构造函数,并在构造函数后面紧跟方法的定义。
function Checking(amount){
this.balance = amount;//属性
this.deposit = deposit;//方法
this.withdraw = withdraw;//方法
this.toString = toString;//方法
}
说明:
this关键字用来将方法和属性绑定到一个对象的实例上。
function deposit(amount){
this.balance += amount;
}
function withdraw(amount){
if(amount <= this.balance){
this.balance -= amount;
}
if(amount > this.balance){
console.log("Insufficient funds");
}
}
function toString(){
return "Balance:" + this.balance;
}
说明:
- 上面的方法都是对象的成员方法,可以通过this关键字访问这个对象的其它属性或方法
- 通过new关键字调用构造函数,创建实例对象。
var account = new Checking(500);
account.deposit(1000);
......
1.4 小结
编写出让人容易阅读的代码和编写出让计算机能正确执行的代码同等重要!