关于函数 深碍√TFBOYSˉ_ 2024-04-18 19:54 10阅读 0赞 ## 带有返回值的函数: ## **语法结构:** function 函数名(形参){ return; } 带有返回值的函数需要使用变量来接收。 例如: function show(a, b) { if (a > b) { return a + b; } else if (a < b) { return a * b; } else { return 1; } } var c = show(5, 8); console.log(c); //40 全局变量: 作用域范围是于整个js文件,任何一个函数都可以访问,var关键字省略了也会被认为是全局变量。 局部变量: 作用域只在函数内部,不可以省略var关键字,如果省略了则会成为全局变量。 例如: var x; alert(x); function x() { }; //function x() 函数声明和变量声明提升,且函数声明优先。 var x = 30; function test() { alert(x); var x = 10; alert(x); x = 20; function x() { }; alert(x); } test(); //function x() { } 10 20 在函数test中,变量声明和函数声明会提升,而且函数声明优先级大于变量声明,所以第一个alert(x)会弹出function x()\{\}。 第二个alert(x)会弹出10,第三个alert(x)会弹出20,是因为变量x被重新赋值。 test函数内部有声明变量,其为局部变量,所以在该函数内部弹出的X会调用函数内部的局部变量,遵循就近原则,并不会获取函数外部的全局变量X。 ## 函数表达式: ## 将一个匿名函数赋值给一个变量,这个匿名函数又称为函数表达式; var arr = function () { alert('hahha'); } arr(); ## 递归函数: ## 递归函数: ①函数内部直接或者间接的调用函数本身。 ②必须有一个终止的条件。 function factorial(n) { if (n === 1) { return 1; }else{ return n * factorial(n - 1); } } console.log(factorial(10)); ## 闭包: ## **指的是有权访问另一个函数作用域中变量的函数;** var e; var suibian = function ff(){ var c = Math.random()*10; var con = function(){ alert(c); } return con; } e =suibian(); e(); //6.357520109970775 e(); //6.357520109970775 (再次调用数值不变是因为闭包有保存数据的作用,外围函数不再执行,按顺序结构执行内层函数) e =suibian(); (再次调用形成新的闭包) e(); //9.698936650606523 e(); //9.698936650606523
还没有评论,来说两句吧...