提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
1.形参和实参的定义
形参:是在定义函数时使用的参数,目的是用来接收调用该函数时传进来的实际参数。
实参:是在调用时传递给函数的参数
2.函数是js数据类型中的哪一种?
js数据类型 只有两种:基本数据 引用数据: object function
举例1:
function fn(){}
function fm () {
this.fm=100
fn.fm=100
}
fn.fn=fm
// fm()
fn.fn() //让fm函数运行 而且调用者是fn函数(对象) 运行的函数内部的this是fn函数
console.log(fn.fn,fn.fm)
console.log(window.fm)
运行结果:
举例2:
var obj = {
name: "karen",
fn: function() {
console.log(this.name)
}
}
var a = obj.fn
a();
运行结果:
举例3:
//作用域: 函数内部和外部
function fn(){
var obj = {
name: "karen",
fm: function(){
console.log(name)
}
}
var name
}
运行结果:
举例4:函数的知识点:
function fn(a,b){
var c=a+b
console.log(c)
//函数内部有一个关键字 arguments,代表实际传入函数的参数列表(类数组)
console.log(arguments)
}
//实际传入函数的参数(实参) 的个数可以比形参的个数多,按照顺序赋值
//不会影响程序的执行逻辑但是会影响性能
fn(10,20,30,40)
运行结果:
举例5:
function fn(a,b,c){
if(a==undefined){a=0}
if(b==undefined){b={}} //默认值
console.log(a,b)
console.log(arguments.length) //实参个数
}
//实际传入函数的参数(实参) 的个数可以比形参的个数少,按照顺序赋值
//可能会影响程序的执行逻辑==>解决方案就是设计函数时提前预设
fn(10)
fn()
fn(100,{name:"karen"})
运行结果:
3.函数的length属性代表的是形参的个数(笔试题)
举例6:
function fn(a,b,c){
if(a==undefined){a=0}
if(b==undefined){b={}} //默认值
// console.log(a,b)
// console.log(arguments.length) //实参个数
}
console.log(fn.length)
fn(10)
运行结果:
4.函数的name属性
举例7:
function fn () {
}
console.log(fn.name)
var a=fn
console.log(a.name)
var a=function(){}
console.log(a.name)
var a=function fn(){}
console.log(a.name)
运行结果:
综合来说,当局部变量未声明或只声明而未赋值时,内存中还没有这个变量,这时候调用的同名变量是形参。当局部变量赋值完成后,内存中已经存在这个变量,并且覆盖了同名的形参。后面再调用该变量时,就指的的局部变量了