1.函数表达式
函数里层可以访问外层,外层不可以访问里层;
function sum(){
var result = 0;
for(var i = 0;i<arguments.length;i++){
result += arguments[i];
}
console.log(result);
}
sum(1,2,3,4,5,6,7,8,10)
function scream(animal){
switch(animal){
case "dog":
document.write("wang!");
return;
case "cat":
document.write("maio!");
return;
case "fish":
document.write("o~o~o~");
return;
}
}
function reverse(){
var num = window.prompt("input");
var str = "";
for(var i = num.length-1; i >=0;i --){
str += transfer(num[i]);
}
document.write(str);
}
function transfer(target){
switch(target){
case "1":
return "一";
case "2":
return "二";
case "3":
return "三";
}
}
计算阶乘
//递归:找规律,找出口;
function jc(n){
if(n == 1 || n == 0){
return 1;
}
return n*jc(n-1);
}
//斐波那契数列
function fb(n){
if(n == 1|| n == 2)
{
return 1;
}
return fb(n-1)+fb(n-2);
}
△var a = 123;–>console.log(a) == console.log(window.a)//window就是全局;
2.预编译四部曲
1.创建AO (Action object){}对象;
2.找形参和变量声明,将变量和形参声明作为AO的属性名;值为undefined
3.将实参和形参统一;
4.在函数体里面找函数声明,值赋予函数体;
例:return在最上面返回function();在最底下返回最后的赋值;
3.css中display属性有几种:block,none,inline,inline-block;
4.[[scope]]:每个javascripe函数都是一个对象,对象中有些属性我们可以访问,但有些不可以,这些仅供JavaScript引擎存取,[[scope]]:就是其中一个,指的是我们所说的作用域,其中存储了运行期上下文的集合;
作用域链:[[scope]]中所存储的执行期上下文对象的集合,这个集合呈链式链接,我们把这种链式链接叫做作用域链。
5.闭包:内部函数背包寻到外部时,产生闭包。闭包会导致原有的作用域链不释放,造成内存泄露。作用:实现公有变量:函数累加器;可以做缓存:存储结构;可以实现封装,属性私有化;模块化开发,防止局部污染;
6.立即执行函数:针对初始化功能的函数:
(function(){
var a = 123;
var b =234;
consele.log(a+b)
}())
//执行完就被销毁;