js笔记——函数、递归、预编译

函数

  • 函数声明:function 函数名(参数){函数体;}
  • 函数表达式:var 函数名=function(参数){函数体;}
//命名函数表达式定义函数,但是此时只有test表示的是这个函数,abc不是。
var test = function abc() {
     
    alert('hello world');
}
//匿名函数表达式定义函数 --> 一般说函数表达式指的是这个
var test2 = function () {
     
    alert('hello world');
}
console.log(test.name); //abc
console.log(test2.name); //test2
  • 命名规则:小驼峰
function theFirstFunc() {
     
    alert('hello world');
}
//和java、c++输出地址不同,js输出函数体
document.write(theFirstFunc); //function theFirstFunc(){ alert('hello world'); }
  • 形参实参:形参实参传递的个数可以不同,函数会从第一个形参开始往后依次匹配
 var test = function (a, b, c) {
     
    console.log('a:' + a + ' b:' + b + ' c:' + c);
    console.log(arguments); //arguments -->实参列表
    console.log(test.length); //test.length --> 形参的长度
}
test(1, 2); //a:1 b:2 c:undefined
//Arguments(2) [1, 2, callee: ƒ, Symbol(Symbol.iterator): ƒ]
//3
test(1, 2, 3, 4); //14 a:1 b:2 c:3
//Arguments(4) [1, 2, 3, 4, callee: ƒ, Symbol(Symbol.iterator): ƒ]
//3
//实参a和arguments[0]虽然不是指向同一块地址,
//但是存在映射关系,一个发生变化另一个就会跟着变化
var test = function (a, b) {
     
    console.log(a);//1
    a = 10;
    console.log(arguments[0]);//10
    arguments[0] = 2;
    console.log(a);//2
}
test(1, 1);
//但是如果实参没有传递,就不会存在映射
var test = function (a, b) {
     
    console.log(b);//undefined
    b = 10;
    console.log(arguments[1]);//undefined
    arguments[1] = 2;
    console.log(b);//10
}
test(1);
  • 变量作用域:
    定义:变量(变量作用又称上下文)和函数生效(能被访问)的区域

你可能感兴趣的:(javaScript学习,js,javascript,预编译,函数)