意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

JavaScript函数的相关基础知识有哪些

来源:恒创科技 编辑:恒创科技编辑部
2024-01-21 15:13:59
今天小编跟大家讲解下有关“JavaScript函数的相关基础知识有哪些”的内容 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了相关资料,希望小伙伴们看了有所帮助。



JavaScript函数的相关基础知识有哪些

函数简介

函数function

函数也是一个对象 函数是实现功能的n条语句的封装体,需要的时候就可以随时调用 函数可以执行的,其他类型的数据不能执行 使用typeof检查一个函数对象时,会返回function

优点:

提高代码的复用 便于阅读交流

创建函数

构造函数创建函数

语法

var fun =new Function(代码块);

这种形式构建函数的比较少。

函数声明创建函数

语法:

function 函数名(形参1,形参2......形参N){
    语句...
}

函数表达式创建函数

var 函数名 = function 函数名(形参1,形参2......形参N){
    语句...
}

函数的参数

形参(形式参数):

在函数中的()中指定一个或多个形参 多个形参之间使用,隔开,声明形参就相当于在函数内部声明了对应的变量,但是并不赋值

实参(实际参数):

在调用函数时,可以在()中指定实参 实参将会赋值给函数中相应的形参 调用函数时,解析器不会检查实参的类型(所以要注意,是否有可能会接受到非法的参数,如果有可能则需要对参数进行类型检查)
function sum(a, b) {
    console.log(a + b);
}
sum(1, 2);//调用函数,传入实参

参数的数量:

函数的实参和形参的个数可以不同 A、实参的个数多于形参的个数:函数正常运行,多余的实参被忽略 B、实参的个数少于形参的个数: 多余的形参会变成undefined的变量

问题: 在JavaScript中调用函数时传递变量参数时,是值传递还是引用传递?

理解1:都是值(基本/地址值)传递 理解2:可能是指传递,也可能是引用传递(地址值)
var a = 3;
function fn(a) {
    a = a + 1;
}
fn(a);
console.log("a为:", a);// 3


在这里就可以理解为是值(基本)传递

var obj = { name: "心猿" };//声明一个对象
function fn(obj) {
    console.log(obj.name);
}
fn(obj);//“心猿”
//这里可以理解为地址值传递,也可以理解为引用传递(地址值)

函数的调用

直接调用:

函数名()

function fn(obj) {
    console.log("我是直接被调用的!");
}
fn()//直接调用

通过对象调用

obj.函数名()

Obj = {
    fun(){
        console.log("我是通过对象调用的!");
    }
}
Obj.fun();//通过对象调用函数

new调用

new fun()

function fun() {
    console.log("我是通过new调用的!");
    return 1 + 2;//返回一个值
}
var result = new fun();
console.log("result:", result);//fun {}
console.log("result的数据类型:",typeof result);//"object"


注意:

1、用new调用的函数,得到的永远是一个对象,不管函数有没有返回值

2、使用new调用函数,这个函数就是一个用来创建对象的函数(构造函数)

fun.call/apply(obj)调用

这个是临时让fun成为obj的方法进行调用

var obj = { name: "心猿" };//声明一个对象
function fun() {
    this.age = 5000;
    console.log("通过fun.call(obj)调用函数!");
}
//不能直接通过obj.fun()调用,但是可以通过fun.call(obj)进行调用
fun.call(obj)//相当于obj.fun
//打印通过fun.call(obj)调用函数!
console.log("还可以当做obj的方法调用age的信息  "+"age:",obj.age);//5000

函数的返回值

函数可以有返回值,也可以没有返回值。

有返回值的函数:函数体中通过return语法返回一个值,这个决定程序下一步操作 无返回值的函数:函数只实现某种功能,不需要返回值(函数体中没有return语句) 返回值可以是任意数据类型,可以是基本数据类型,也可以是对象和函数。

立即执行函数

函数定义完,立即被调用,这种函数叫做立即执行函数

立即执行函数往往只会执行一次。

语法:

(function(){
	代码块;
})();

例如:

(function (a, b) {
    console.log("num:", a + b);
})(1,3);//4

方法

对象中属性可以是一个函数 如果一个函数作为一个对象的属性保存。那么我们称这个函数是这个对象的方法 调用这个函数就是调用对象的方法(method),本质上和函数没有区别
var obj = new Object()
{
    obj.name = "心猿";
    obj.age = 3000;
    obj.sayName = function(){
        console.log("name:",obj.name);
    }
}
obj.sayName();

另一种写法:

var obj = {
    name: "意马",
    age: 3000,
    sayName: function () {
        console.log("name:", obj.name);
    }
}
obj.sayName();

枚举对象中的属性:

可以看我这篇的不同方法遍历的区别:比较JavaScript中for、forEach、for…in、for…of的区别

使用for...in语句

语法

for(var index in arr)
{
    console.log(index);//代码块
}

for ...in语句 对象有几个属性,循环体就会执行几次,每次执行时,会将对象中的一个属性的名字赋值给变量

var person = {
    name:"孙悟空",
    age:5777,
    gender:"男"
};
for(var index in person)
{
    console.log(person[index]);
}

作用域

作用域指一个变量的作用范围

在JavaScript中一共两种作用域:

1.全局作用域(全局变量)

2.函数作用域(局部变量)

3.块级作用域ES6语法

全局作用域

在函数外部定义的变量或在函数内部没有使用var声明的变量。 全局作用域在浏览器页面打开时创建,在页面关闭是销毁 在全局作用域中有一个全局对象window 它代表的是一个浏览器的窗口 它代表的是一个浏览器的窗口,它由浏览器创建我们可以直接使用 如果在node.js环境下使用这个全局对象window会报错,需要在浏览器中才会有显示结果。 在全局作用域中: 创建的变量都会作为window对象的属性保存 创建的函数都会作为window对象的方法保存 全局作用域中的变量都是全局变量 在页面任意的部分都可以访问的到

变量作为window对象的属性保存

var  a = 10;
console.log("a:",a);
console.log("window.a:",window.a);

因为环境的原因在node.js下会报错


在浏览器中会正常显示


函数都会作为window对象的方法

function fun(){
   console.log("我是window.fun函数!")
}
window.fun();

函数作用域

调用函数时创建函数作用域,函数执行完毕以后,函数作用域销毁 每调用一次函数就会创建一个新的函数作用域,他们之间是互相独立的 在函数作用域中可以访问到全局作用域的变量 当函数作用域操作一个变量时,会现在自身作用域中寻找,如果有就直接使用,如果全局作用域中依然没有找到,则会报错ReferennceError 在函数中要访问全局变量可以使用window对象

块级作用域

ES6(ECMAScript 2016)使用let声明的变量,作用范围在语句块中

for(let i=0;i<100;i++){
			}

总结


以上就是关于“JavaScript函数的相关基础知识有哪些”的介绍了,感谢各位的阅读,希望这篇文章能帮助大家解决问题。如果想要了解更多知识,欢迎关注恒创科技,小编每天都会为大家更新不同的知识。
上一篇: React中使用window.print打印页面无响应怎么办 下一篇: 手机怎么远程登录云服务器?