1:作用域
定义:变量起作用的范围。
在函数外部定义的变量称为全局变量,那么所有的脚本和函数都能访问到它。
在函数内部定义的变量称为局部变量(本地变量),所以只能在函数内部才能访问的到。
注:
1:如果把值赋给尚未声明的变量,该变量将自动作为全局变量声明。
2:变量作用域在函数定义的时候就已经确定下来了。
2:生存周期
JavaScript 变量的生命期从它们被声明的时间开始。
局部变量会在函数运行完毕后被删除。
全局变量会在页面关闭后被删除。
3:with语句(扩展)
定义:为一个或者一组语句指定默认对象。
注意:在严格模式下,with语句不能使用。
提示:with语句是运行缓慢的代码块,尽量避免使用。
4:回调函数
回调函数就是一个通过函数指针调用的函数。
如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。
回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。
5:递归函数
定义:允许内部程序调用自己本身的函数。
特点:
1:在函数里面调用自身。
2:必须有一个明确的递归结束条件,这个称之为递归出口。
3:不确定循环执行的次数。
注:快速排序中就使用到了递归函数。
function product (n) {
if(n===1) {
return 1;
}
return n*product(n-1);
}
6:匿名函数及调用方式
定义:顾名思义,就是没有名字的函数。
自运行:自动运行。
调用方式:
(function () {})();
7:构造函数
主要用来在创建对象时初始化对象,即为对象成员变量赋初始值,总与new运算符一起使用。构造函数名称首字母一般都大写。
应用:
1:利用递归求100的阶乘。
function recursive(num) {
return num === 1 ? 1: num * recursive(num - 1);
}
function product (n) {
if(n===1) {
return 1;
}
return n*product(n-1);
}
2:利用递归求两个数字的最大公约数。
公约数:亦称“公因数”。它是一个能被若干个整数同时均整除的整数。如果一个整数同时是几个整数的约数,称这个整数为它们的“公约数”;公约数中最大的称为最大公约数。
function getNum(m, n) {
var r = m % n;
m = n;
n = r;
return r === 0 ? m : getNum(m, n);
}
3:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数求/1+1/3+...+1/n。
function fun(n) {
var sum = 0;
if(n % 2 === 0){
for(var i = 1;i <= n;i++){
if(i % 2 == 0){
sum = sum + 1/i;
}
}
}else{
for(var i = 1;i <= n;i++){
if(i % 2 == 1){
sum = sum + 1/i;
}
}
}
return sum;
}
console.log(fun(3));
4:使用函数完成任意数字阶乘的计算。
要求:页面上输入任意数字,点击按钮后计算阶乘。
<input type="text" id="date" /><input type="submit" id="btn" value="计算" />
<script type="text/javascript">
// 使用函数完成任意数字阶乘的计算。
// 要求:页面上输入任意数字,点击按钮后计算阶乘。
function $(id) {
return document.getElementById(id);
}
var date = $('date');
var btn = $('btn');
function jiecheng(n) {
var sum = 1;
for(var i=1;i<=n;i++){
sum *= i;
}
return sum;
}
btn.onclick = function () {
var val = date.value;
console.log(jiecheng(val));
}
</script>
1:对象
定义:对象就是属性的无序集合,每个属性存放一个原始值、对象或者函数。
对象的属性和行为:
属性:用数据值来描述他的状态。
行为:用来改变对象行为的方法。
2:创建对象
1:构造函数方式:
function fun1 () {}
var obj=new fun1();
alert(typeof obj);
2:Object方式:
var obj=new Object();
3:隐式声明的方式:
var obj={};
alert(typeof obj);
3:添加对象属性和方法
如果属性值是函数,我们称它为对象的方法,否则叫做属性。
1:声明的时候添加:
var obj={属性名:属性值,属性名2:属性值2,......};
2:声明以后再添加
4:访问对象属性和方法
形式为:
引用值.属性
引用值.方法();
5:删除对象属性和方法
使用delete运算符。
6:销毁对象
JS有自己的垃圾回收机制,就是在对象没有引用的时候释放内存(销毁);
使对象=null; 即可把对象销毁。
var obj={} // 这个是个空的对象,它是一个对象,只是内容为空。
obj=null; // 它实际上不是一个对象,是即将要创建一个对象。 null是一个空对象指针,但不是空的对象。
应用:
1:熟练掌握对象的使用。
2:使用JSON形式创建一个对象,该对象存储一个学生的信息,该对象包含学号、身份证、年龄、性别、所学专业等属性信息,同时该对象包含一个自我介绍的方法,用来输出该对象的所有信息。
var student = {
no: 111,
cardId: 43224325435464576575645,
age: 28,
sex: '男',
major: '计算机专业不是'
};
综合应用:
1:常见事件与函数的结合(可将信息打印到控制台)。
<div id="box" style="width: 100px;height: 100px;background: red;"></div>
<input type="text" value="双11大促销" id="btn" />
<script type="text/javascript">
function $(id) {
return document.getElementById(id);
}
var box = $('box');
var btn = $('btn');
box.ondblclick = function () {
console.log('您刚刚双击了box');
}
btn.onfocus = function(){
btn.value=''
}
btn.onblur = function() {
btn.value='双11大促销'
}
</script>
2:熟练掌握对象的使用。