Function定义和arguments

Function

return后代码不执行
return后没东西,返回的是undefined

定义函数的3种方式:

语句式 函数可以预解析,速度快,局部作用域 2个函数重名定义,后者覆盖前者

function sum(a,b) {
    console.log(a + b);
}

直接量式 顺序解析,快,局部作用域

var sum = function sum(a,b) {
    console.log(a + b);
}

构造函数方式 顺序解析,慢,顶级作用域

var sum = new Function('a','b','console.log(a + b)');
sum(10,20);
function f(){
    return 1
}
alert(f())
var f = new Function("return 2")
alert(f())
var f = function(){
    return 3
}
alert(f())
function f(){
    return 4
}
alert(f())
var f = new Function("return 5")
alert(f())
var f = function(){
    return 6
}
alert(f())
// 语句式是预解析,相同覆盖  4 其他数序执行 2 3 3 5 6

函数作用域的例子
构造函数是顶级作用域

var k = 1
function w(){
    var k = 2;
    //function m(){ return k }  //2
    //var m = function(){ return k } //2
    var m = new Function('return k')  //1
    alert(m())
}
w()

arguments对象

形参和实参数量可以不一致
形参的个数 函数名.length

function m(a,b){
    return a+b
}
m(1,2,5)
alert(m.length)  // 或者是  arguments.callee.length

实参获得 必须在函数内部 arguments [0]

function m(a,b){
    alert(arguments[0])
    alert(arguments.length)
    return a+b
}
m(1,2)

arguments 函数的参数 只是与数组类似,不是真正的Array实例

arguments.callee 用于递归 指向函数本身、

function xx(n){
    if(n>1){
        return n*arguments.callee(n-1)
    }else{
        return 1
    }
    
}
xx(3) //6

严格模式下不要使用arguments.callee

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

相关阅读更多精彩内容

  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 10,191评论 0 5
  • 函数只定义一次,但可能被执行或调用任意次。JS函数是参数化的,函数的定义会包括一个称为形参的标识符列表,这些参数在...
    PySong阅读 2,688评论 0 0
  • 函数只定义一次,但可能被执行或调用任意次。JS函数是参数化的,函数的定义会包括一个称为形参的标识符列表,这些参数在...
    PySong阅读 3,663评论 0 0
  • 函数只定义一次,但可能被执行或调用任意次。JS函数是参数化的,函数的定义会包括一个称为形参的标识符列表,这些参数在...
    PySong阅读 4,318评论 0 0
  • 在js中,函数本身属于对象的一种,因此可以定义、赋值,作为对象的属性或者成为其他函数的参数。函数名只是函数这个对象...
    bjhu电net阅读 3,602评论 0 5

友情链接更多精彩内容