当前位置:
首页 > 网站开发 > JavaScript >
-
JavaScript教程之JS高程学习笔记:JS函数基本使用
函数是一门语言的核心的概念。如果你是开发人员可以通过封装多条语句在函数内部,使用时再调用该函数即可。在ECMAScript的语法规则中,函数使用function关键字来声明,后跟一组参数以及函数体。
基本语法如下:
function 函数名 (参数){ 语句块 }
请打开Google浏览器,打开Developer Tools开发工具(快捷键 ctrl + shift + J):
function Hi(name, say) { console.log("Hi" + name + "," + say); }
return语句在函数内部,使用return语句的时候,后面的代码就不会被执行。
function add(a1, a2) { return a1 + a2; console.log("Hi world!");//不会被执行 }
当return不带任何返回值的时候,在函数停止执行后将返回undefined值。
function sayHi(name, hi) { return; alert("Hello " + name + "," + message); //永远不会调用 } console.log(sayHi("xiaoming","hi"));//undefined
arguments对象
ECMAScript函数不界定,你要传入多少个参数,在你只接收多个参数时,在调用时也未必会调用完全部参数。
function arg() { console.log(arguments[0] + "," + arguments[1] +......); }
为什么会这样呢?是因为ECMAScript中的参数在内部是用一个数组来实现的,传递参数是,只接收参数是始终都是这个数组,并不关心这其中包含的哪个参数。
在访问这个数组的时候,也跟访问数组类似,使用方括号语法访问每一个元素,使用length属性确定传递进来多少参数。
function howManyNum() { console.log(arguments.length); } howManyNum(); //0 howManyNum(1000); //1 howManyNum("num1",22); //2
可以使用argument对象进行修改值,修改其arguments[1]的值,num2也会跟着变化,这里doWrite函数传入了一个参数arguments[1]设置的值不会反应到命名参数中,这是因为arguments对象长度是由传入的参数个数决定的,不是由定义函数时命名参数的个数决定的。
function doWrite(num1, num2) { arguments[1] = 10; console.log(arguments[0]);//10 console.log(arguments[1]);//10 console.log(num2);//undefined } console.log(doWrite(10))//undefined
总结:
- 无须指定函数的返回值,因为任何ECMAScript函数都可以在任何时候返回任何值。
- 事实上,未指定返回值的函数返回的时一个特殊的undefined值。
- ECMAScript中没有签名的概念,因为其函数参数是以一个包含零或多个值的数组形式传递的。
- 在访问函数的参数时,可以向ECMAScript函数传递任意数量的参数,然后通过arguments对象进行访问参数。
如果有错误或者不严谨的地方,请务必给予指正,十分感谢。如果您喜欢或者有所启发,欢迎添加收藏,一起加油学习啊。
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式