初始javascript
声明和初始化变量
- javascript中变量默认是全局变量,甚至不需要在使用前进行声明
- 对一个事先未予声明的javascript变量进行初始化,该变量即为一个全局变量
- 尽量在使用变量前先对其进行声明,这样做可以使声明的变量为局部变量
javascript中的算术运算和数据库函数
Math.sqrt(n);//平方根函数
Math.abs(n);//绝对值函数
n.toFixed(2);//将数组格式化为固定精度
判断结构
if语句
if语句有如下三种形式:
- 简单的if语句
- if-else语句
- if-else语句
switch语句
在有多个简单的选择时,使用该语句的代码结构更加清晰。
javascript中的switch语句和其他编程语言的一个主要区别是:在javascript中,用来判断的表达式可以是任意类型,而不仅限于整型;而C++和Java等一些语言就要求该表达式必须为整型。
循环结构
while循环和for循环
函数
javascript提供了两种定义函数的方式:
- 有返回值的
- 没有返回值的(子程或void函数)
使用没有返回值的参数并不是为了得到它的返回值,而是为了执行函数中定义的操作
javascript中,函数的参数传递都是按值传递,没有按引用传递的参数。但是javascript中有保存引用的对象,比如数组,它们是按引用传递的。
变量作用域
变量作用域是指一个变量在程序中的哪些地方可以访问。javascript中的变量作用域被定义为函数作用域。这是指变量的值在定义该变量的函数内是可见的,并且定义在该函数内的嵌套函数中也可访问该变量。
分为:全局作用域与局部作用域
注意:javascript允许在定义变量时不使用关键字var,但这样做的后果是定义的变量自动拥有了全局作用域,即使是在一个函数作用域内定义的该变量,也是全局变量。
ES5的时候,javascript拥有的是函数作用域,没有块级作用域。
ES6的时候,javascript拥有块级作用域。
递归
javascript中允许函数递归调用。
当一个函数被递归调用,在递归没有完成时,函数的计算记过暂时被挂起。
对于大多数情况,javascript都有能力处理递归层次较深的递归调用,但是有的算法需要的递归深度超出了javascript的处理能力,这时需要寻求该算法的一种迭代解决方案来解决。
任何可以被递归定义的函数,都可以被改写为迭代式的程序!
对象和面向对象编程
javascript提供了多种方式来创建和使用对象。
对象通过如下方式创建:定义包含属性和方法声明的构造函数,并在构造函数后紧跟方法的定义。
下面时一个检查银行账户对象的构造函数:
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){
print('Insufficient funds');
}
}
function toString(){
return "Balance:" + this.balance;
}