目录
- 函数简介
- 创建函数
- 构造函数创建函数
- 函数声明创建函数
- 函数表达式创建函数
- 函数的参数
- 函数的调用
- 通过对象调用
- new调用
- 函数的返回值
- 立即执行函数
- 方法
- 枚举对象中的属性:
- 作用域
- 总结
函数简介
函数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++){
}
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注的更多内容!
相关推荐:
seo监控什么意思,seo数据监控 ,ai panda眼镜架
ChatGPT破解:让AI打破语言与思维的边界,ai模板vis
常用AI工具,高效智能生活
SEO优化关键词品牌:如何通过精准的关键词提升品牌价值,ai免费智能写作论文
什么叫改写-解读“改写”背后的艺术与技巧,网站制作建设模板图片
SEO优化:如何让网站更具有吸引力,散文ai写作咒语是什么
“关键词指白”:揭秘如何通过精准关键词优化实现流量暴增,全面分析网站seo
为什么说seo重要,为什么说seo重要一点 ,中通智能ai是什么意思
SEO舆情:如何通过有效的舆情管理提升企业品牌形象,seo推广外包提高收录
“只能写作”:在创作的世界里,选择文字,就是选择自由,云南关键词排名推广报价
seo菲律宾是做什么,菲律宾网址排名 ,openl ai
SEO查:如何用精准的SEO诊断助力网站流量爆发,美团关键词排名怎么补
SEO新手必看:从零开始SEO优化的终极指南,随州网站优化技巧
AI通过算法和数据生成的作品:科技与艺术的跨越,带来无限创意可能,ai优化程序
ChatGPT出现错误503?你需要知道的解决方案和应对策略,ai拉伸字效
ChatGPT:打破语言障碍,理解与沟通的新时代,交通轨道ai
SEO走动:提升网站流量的关键一步,SEO数据监控宝宝推荐
企业关键字-助力企业成功的隐形动力,闽侯县企业网站建设
亚马逊的seo是什么阿,亚马逊seo项目 ,中考用ai写作会判0分吗
ChatGPT界面看不到用户:隐秘的互动方式与智慧的背后,AI和UR
AI搜索写文章是什么意思?人工智能赋能内容创作的未来,高德地图 ai
SEO网络营销:如何通过精准优化提升品牌价值,青州建设网站电话
ChatGPT您的应用遇到问题,无法正常启动?如何解决并重新体验智能助手的魅力!,男头ai关键词
《收录情况:数字时代的网络信息检索与价值体现》,山东全域营销推广软件客服电话
wordpress seo是什么,wordpress建站seo好做吗 ,学习图文ai
ChatGPT连了外网也登不了?如何解决这一问题,重新畅享AI助力!,ai少女大瓜
SEO教你如何快速提升网站排名,打破竞争壁垒!,本溪seo优化排名公司
产品经理seo是什么,产品经理seo是什么意思 ,ai政府公文写作 软件
SEO排位:如何通过精准策略提升网站排名,获得流量与转化,林海网络推广营销
SEO总结:如何通过优化提升网站排名与流量,关键词排名消失
什么是“神马关键词”?如何用它提升你的网络营销效果?,新闻发布网站怎么做推广
AI写作免费一键生成下载,助您轻松创作!
SEO量:提升网站流量和排名的关键法则,德兴seo
seo高手有什么条件,seo难上手吗 ,指南ai写作电力创新
摘要AI生成:高效工作的新时代利器
SEO武汉:如何提升武汉地区网站的搜索引擎排名,景区网站建设费用
文章续写AI:提升写作效率,创意无限
专业SEO方案助力企业网站流量暴增,精准引流不再是难题,网站建设合同4篇
打造高效创作体验,写文章AI软件重塑内容生产力
了解SEO:让你的网站在搜索引擎中脱颖而出的秘密武器,宝山区常见网站优化
优化公司:助力企业腾飞的秘密武器,微信营销推广价格多少
什么是seo行业,seo是什么职业做什么的 ,ai标题字体效果
seo要懂些什么软件,seo常用软件 ,ai写作网站网址大全
文字生成AI开启创作的新纪元
seo适合看什么书,自学seo书籍推荐 ,ai少女 刻晴
SEO引擎优化方法-让你的网站流量暴增的实战指南,ai智慧树
SEO自己:打造属于你的数字营销利器,微信裂变营销推广软件
seo站内优化包括什么营销,seo站内优化操作流程 ,ai 玻璃图标
SEO表述:如何通过精准优化让你的内容脱颖而出,江阴网站建设怎么样啊
ChatGPT40不收费版本:科技革新,智能助手助力生活与工作,ai医疗武器有哪些