JS函数入门
一.
函数的声明及调用
* 1函数的格式:function 函数名(参数1,参数2......){
* //函数体
* return 结果;
*
* }
* 函数调用的格式:
* 直接调用:函数名(参数1的值,参数2的值......);
* 事件调用:事件名="函数名()";
* 2,函数声明的几点强调:
* ①函数名的声明,必须符合小驼峰法则(首字母小写,之后每个单词首字母大写);
* ②参数列表,可以有参数也可以没有参数,分别称为有参函数,无参函数;
* ③声明函数时的参数列表,称为"形参列表"(变量的名);
* 调用函数时的参数列表,称为"实参列表"(变量的值);
* 函数中,实际有效的参数取决于参数的赋值,未被赋值的形参,将为Undeined;
* ④函数如果需要返回值,可用return返回结果;
* 调用函数时,使用var 变量名=函数名();的方式,接收返回结果;
* 如果函数没有返回值,则接受的结果为undefined;
* ⑤函数中变量的作用域:
* 在函数中,使用var声明变量,默认为函数局部变量,只在函数内能用;
* 不用var声明默认全局变量(函数中的全局变量必须在函数调用后才能使用)。
* 函数的形参列表,为函数局部变量,只在函数内部能调用;
* ⑥函数声明与函数调用没有先后之分。即,调用可以写在声明之前。
* consle.log(num);
* var num=10;
* 上述代码执行顺序:
* JS中代码执行,会先进行检查,装载,即声明变量,函数等操作;
* 然后再进入执行阶段,(变量的赋值属于执行阶段)
* 所以,函数的声明属于检查装载结案,函数的调用属于执行阶段。so,函数调用语句写在函数声明之前没关系.
* 所以上述代码执行流入
* 声明阶段
* var num;//声明变量
* function funcN()//声明函数
* 执行阶段
*
* console.log(num);
* num=10
* funcN()执行函数的{} 中的代码。
*
二.
匿名函数的声明及调用
* 1声明一个匿名函数,直接赋给某个事件;
* window.onload=function(){}
* 2使用函数表达式声明匿名函数;
* 声明函数表达式:var func=function(){}
* 调用函数表达式:func();
* 使用匿名函数表达式,则调用语句,必须在声明语句之后,否则报错(对比常规函数声明与调用区别)
* 3使用自执行函数,声明并直接调用匿名函数:
* !function(参数1){}(参数1的值);//使用任意运算符开头,一般用!
* (function(){}())//使用()将匿名函数及之后的括号包裹
* (function(){})()//使用()只包裹匿名函数表达式
*
*
* 三种写法的特点:
* ①结构清晰,开头加!结尾加()不容易错乱,推荐使用;
* ②可以表明匿名函数与之后的()为一个整体,推荐使用;
* ③无法表明函数与之后()为一个整体,不推荐使用。
*三.
函数内部的属性
* Arguments对象
* 1作用:用于保存调用函数时,所赋值的实参列表。
* 当我们调用函数,并使用实参赋值时,实际上参数已经保存到arguments数组中,即使没有形参,也可以使用arguments[n]的形式调用参数;
* 2arguments数组的个数,取决于实参列表,与形参无关(从0开始)
* 但,当第N个位置的形参,实参,arguents都存在时,形参与arguments是同步的。(即在函数中修改一个的值另一个会同步变化)
* 3.arguments.callee是arguments的重要属性,用于返回arguments所在函数的引用;
* arguments.callee()可以调用自身函数执行;
* 在函数内部调用函数自身的写法,被称为递归,所以arguments.callee()是递归调用时常用的方式:
* this:
* 指向函数调用语句所在作用域即谁调用函数this指向谁;
JS函数入门的更多相关文章
- JavaScript入门:006—JS函数的定义
JS函数的声明. 声明函数的格式例如以下: function 函数名(參数列表){ //函数语句: return 返回值; } 来看详细的函数声明.1.普通函数 <script type=&qu ...
- Node.js快速入门
Node.js是什么? Node.js是建立在谷歌Chrome的JavaScript引擎(V8引擎)的Web应用程序框架. 它的最新版本是:v0.12.7(在编写本教程时的版本).Node.js在官方 ...
- Node.js开发入门—HelloWorld再分析
在Node.js开发入门(1)我们用http模块实现了一个简单的HelloWorld站点,这次我们再来细致分析下代码.了解很多其它的细节. 先看看http版本号的HelloWorld代码: 代码就是这 ...
- Vue.js+vue-element搭建属于自己的后台管理模板:Vue.js快速入门(二)
Vue.js+vue-element搭建属于自己的后台管理模板:Vue.js快速入门(二) 前言 上篇文章对Vue.js有了初步理解,接下来我们把Vue.js基础语法快速的过一遍,先混个脸熟留个印象就 ...
- 如何编写高质量的 JS 函数(4) --函数式编程[实战篇]
本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/ZoXYbjuezOWgNyJKmSQmTw作者:杨昆 [编写高质量函数系列],往期精彩内容: ...
- JS解密入门——有道翻译
JS解密入门——有道翻译 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识.那么针对这 ...
- Node.js核心入门
前言: 因为以前学习Node.js并没有真正意义上的去学习它,而是粗略的学习了npm的常用命令和Node.js一些模块化的语法,因此昨天花了一天的时间看了<Node.js开发指南>一书.通 ...
- 【JavaScript】JS从入门到深入(复习查漏向
[JavaScript]JS从入门到深入(复习查漏向 pre 精细得学过一遍JS后才发现,原来之前CTF中有些nodejs的题目以及一些游戏题的payload就变得很好理解了. 基础知识 ECMASc ...
- JS快速入门(二)
目录 JS快速入门(二) 结构图 BOM window对象 open() window子对象 location对象 history对象(了解) navigator 对象 screen对象 BOM 定时 ...
随机推荐
- javascript,移动划过超链接鼠标变手型
用css控制鼠标样式的语法如下:<span style="cursor:*">文本或其它页面元素</span>把 * 换成如下15个效果的一种: 下面是对这 ...
- VC中链接错误,提示string重定义
VC链接错误,说是string已经有了实现了,只要 rebuild 一下好了. Linking...LINK : warning LNK4075: ignoring '/EDITANDCONTINUE ...
- Java设计模式——合成/聚合复用原则
一.什么是合成/聚合复用原则? 合成/聚合复用原则是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分:新的对象通过向这些对象的委派达到复用已有功能的目的. 简述为:要尽量使用合成/聚合,尽 ...
- linux中根据进程的PID值来查找执行文件的及其路径
lsof -p PID http://blog.csdn.net/great_smile/article/details/50114133
- js修改table中Td的值(定义td的单击事件)
/* 页面装载时,为每个td增加单击事件,这样,就可以不用对每个页面进行更改. 添加单击事件属性.此处不可使用setAttribute方法. */ onclick=AddObjOfText; 单击事件 ...
- 解决linux中ssh登录Warning:Permanently added (RSA) to the list of known hosts
原因: 在执行scp id_rsa.pub root@hostname:/root/.ssh这一步时,没在本机的/root/.ssh下生成known_hosts文件. 解决方案: vi /etc/ss ...
- PHP面向对象(抽象类与抽象方法、接口的实现)
一.抽象类与抽象方法 1,任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的. 2,定义为抽象的类不能被实例化. 3, 被定义为抽象的方法只是声明了其调用方式(参数) ...
- 【381】python 获取列表中重复元素的索引值
参考:获取python的list中含有重复值的index方法_python_脚本之家 核心思想:建立字典,遍历列表,把列表中每个元素和其索引添加到字典里面 cc = [1, 2, 3, 2, 4] f ...
- 点击li往数组添加对应li的id再点击移除,根据是否有class判断
if($(this).hasClass('click')){ $(this).removeClass('click'); var idAPP = $(this).attr('id'), index = ...
- Delphi的子类化控件消息, 消息子类化
所谓的子类化,网上有很多说明,我就说我个人的随意理解,可能有误,请列位看官斟酌理解. 所谓子类化,个人理解就是拦截某个控件的消息以及样式,来进行自己的特定处理以达到特殊的功能需求.这个子类化,可以有子 ...