当前位置: 首页 > news >正文

js匿名函数

 一、函数的声明及调用
1.函数的声明格式:
function 函数名(参数1,参数2,.....){
//函数体代码
return 返回值;
}
函数的调用:
1)直接调用:函数名(参数1的值,参数2的值,......);
文档注释:

2)事件调用:在HTML标签中,使用事件名="函数名()"

2.函数的注意事项:
1)函数名必须要符合小驼峰法则,首字母小写,之后每隔单词首字母大写;
2)函数名后面的括号中,可以有参数,也可以没有参数,分别称为有参函数和无参函数;
3)声明函数时的参数列表,称为形参列表,形式参数。(变量的名字)

调用函数时的参数列表,称为实参列表,实际参数。(变量的赋值)

4)函数的形参列表个数,与实参列表的个数,没有实际关联关系。
函数参数的个数,取决于实参列表。
如果实参列表的个数<形参列表,则未赋值的形参,将为undefined。
5)函数可以有返回值,使用return返回结果
调用函数时,可以使用一个变量接收函数的返回结果。如果函数没有返回值,则接收的返回值为undefined。

6)函数中变量的作用域:
在函数中使用var声明的变量为局部变量,只能在函数内部访问,不用var声明的变量为全部变量,在函数外面也能访问。

函数的形参列表默认为函数的局部变量,只能在函数的内部使用。
7)函数的声明与函数的调用没用先后之分。即,可以在声明函数前,调用函数。
二、 匿名函数的声明和使用
1.声明一个匿名函数,直接赋值给某一个事件;

2.使用匿名函数表达式。将匿名函数,赋值给一个变量。
声明:var func=function(){  }
调用:func();


注意:使用匿名函数表达式时,函数的调用语句,必须放在函数声明语句之后!!!(与普通函数的区别)
【js代码的执行顺序问题】
js代码在运行时,会分为两大部分。检查装载和执行阶段。检查装载阶段:会先检测代码的语法错误,进行变量、函数的声明
执行阶段:变量的赋值、函数的调用等,都属于执行阶段。
以下代码为例:


原因:上述代码的执行顺序为:
---------------检查装载阶段--------------
var num;
function func1(){};
function func2;


---------------执行阶段--------------
console.log(num);
func1();
func2()=function(){};

3.自执行函数:
1)可以使用多种运算符开头但一般用!

!function(形参列表){}(实参列表)
2)使用()将函数及函数后的括号包裹
(function(){}());
3)使用()值包裹函数值
(function(){})();

三种写法特点
1)使用!开头,结构清晰,不容易混乱,推荐使用;
2)能够将匿名函数与调用的()为一个整体,官方推荐使用;
3)无法表明函数与之后的()的整体性,不推荐使用。

三、函数的内部属性
1.Arguments对象
1)作用:用于储存调用函数时的所有实参。
>>>当调用函数,并用实参赋值时,实际上参数列表已经保存到arguments数组中,可以在函数中,使用arguments[n]的形式调用,n从0开始。
2)arguments数组的个数,取决于实参列表,与形参无关。但是,一旦第n个位置的形参、实参、arguments都存在时,形参将与arguments绑定,同步变化。即,在函数中,修改形参的值,arguments也会改变,反之亦成立。
3)arguments.callee是arguments的重要属性。表示arguments所在函数的引用地址;
在函数里面,可以使用arguments.callee()调用函数本身。
在函数内部,调用函数自身的写法,叫做递归
递归分为两部分:递和归。以递归调用语句为界限,可以将函数分为上下两部分。
:当函数执行上半部分。遇到自身的调用语句时,继续进入内层函数,再执行上半部分。直到执行完最内层函数。
:当最内层函数执行以后,再从最内层函数开始,逐渐执行函数的下半部分。

当最外层函数执行时,遇到自身的调用语句,会进入内层函数执行,而外层函数的后半部分不执行。直到最内层函数执行完以后,再逐步向外执行。

location对象
取到浏览器的URL地址信息;
完整的URL路径:
协议名://主机名(ip地址):端口号/文件所在路径?传递参数(name1=value1&name2=value2) #锚点
例如:
http://127.0.0.1:8080/wenjian/index.html?name=jredu#top

 
其他使用location提供的方法跳转页面的方式

history:浏览历史

 



转载于:https://www.cnblogs.com/jiejiejy/p/7434857.html

相关文章:

  • Could not resolve resource location pattern错误解决方案
  • PAT乙级-1026. 程序运行时间(15)
  • HTTP中GET与POST的区别 99%的错误认识
  • 好汉两个半第十二季/全集Two and a Half Men迅雷下载
  • Learning How to Learn
  • 一起玩树莓派3+使用Gitlab搭建专业Git服务
  • Android Finalizing a Cursor that has not been deactivated or closed
  • 土耳其重大数据泄露事件 数据库安全受关注
  • 互联网分析师:5G距离我们还有多远?
  • oracle增加sequence
  • 藏在高端智能手机芯片里的“外交官”:射频前端
  • 哈尔滨工业大学校园网运营:开放兼容,灵活认证
  • js 获取中文的拼音
  • Wi-Fi新标准HaLow正面挑战ZigBee、Z-Wave
  • 物联网发展的六大智能化前景
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • Docker: 容器互访的三种方式
  • ECS应用管理最佳实践
  • Java-详解HashMap
  • Linux各目录及每个目录的详细介绍
  • Otto开发初探——微服务依赖管理新利器
  • Unix命令
  • use Google search engine
  • vue-loader 源码解析系列之 selector
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • vue自定义指令实现v-tap插件
  • 聚簇索引和非聚簇索引
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 前端技术周刊 2019-02-11 Serverless
  • 通过npm或yarn自动生成vue组件
  • 微信小程序--------语音识别(前端自己也能玩)
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 栈实现走出迷宫(C++)
  • 整理一些计算机基础知识!
  • ​Python 3 新特性:类型注解
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #pragma multi_compile #pragma shader_feature
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (3)nginx 配置(nginx.conf)
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (小白学Java)Java简介和基本配置
  • (一)基于IDEA的JAVA基础1
  • (转)3D模板阴影原理
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .NET 读取 JSON格式的数据
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • .NET学习教程二——.net基础定义+VS常用设置
  • @RequestBody的使用