JavaScript函数的相关基础知识有哪些
Admin 2022-07-07 群英技术资讯 267 次浏览
优点:
语法
var fun =new Function(代码块);
这种形式构建函数的比较少。
语法:
function 函数名(形参1,形参2......形参N){ 语句... }
var 函数名 = function 函数名(形参1,形参2......形参N){ 语句... }
function sum(a, b) { console.log(a + b); } sum(1, 2);//调用函数,传入实参
参数的数量:
问题: 在JavaScript中调用函数时传递变量参数时,是值传递还是引用传递?
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 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
函数可以有返回值,也可以没有返回值。
函数定义完,立即被调用,这种函数叫做立即执行函数
立即执行函数往往只会执行一次。
语法:
(function(){ 代码块; })();
例如:
(function (a, b) { console.log("num:", a + b); })(1,3);//4
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语法
变量作为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
ES6(ECMAScript 2016)使用let声明的变量,作用范围在语句块中
for(let i=0;i<100;i++){ }
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要为大家详细介绍了jquery实现简单的弹窗效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
前几天在vue运行项目过程中报错了,所以下面这篇文章主要给大家介绍了关于Vue报错Syntax Error:TypeError: this.getOptions is not a function的解决方法,需要的朋友可以参考下
JavaScript 的 switch 有四样写法,你知道么?不管你知道不知道,反正我是不知道。我所知道的 JavaScript 的 switch 语句只有一种写法。但要说到对分支的处理,...
这篇文章主要为大家详细介绍了js实现模态窗口增加与删除,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
这篇文章主要给大家介绍了关于v-model及其修饰符的相关资料,v-model指令有三个可以选用的修饰符:.lazy、.number以及.trim,本文通过示例代码介绍的非常详细,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008