javascript - 请问怎么理解计算机中的函数?
类似于这样的说法就不要回答了:函数是一个工厂,你放原料进去,它生成产品出来。
回复内容:
之前的个人理解觉得不妥已删
类似于这样的说法就不要回答了:函数是一个工厂,你放原料进去,它生成产品出来。
你的理解有点外行看热闹的意思,呵呵。
代码本身就是抽象的,所以“计算机中的函数是一种对代码进行抽象的方式”不能说不对,但是也和没说一样。至于“我们使用抽象出来的函数,而不用关心函数里面的代码是如何组织的”,只能说是一种诉求,实际上很多错误正是在函数内部产生的,因此我们不可能完全不关心函数的内部实现。
从语义上来说,函数是行为的具体实现,行为通常是动词或动词短语,如get()[获取], getDetails()[获取详情], getDetailsById()[根据id获取详情]。
从开发的角度来说,函数是一种代码结构,如果一段代码会被使用2次及以上,那么将这段代码放在函数中可以使其更易于维护。
从可读性上说,函数相当于名词解释,用简短的名字表达一个相对复杂的事情,这样阅读起来比较愉快,也不容易歪楼。例如 读取用户详细数据并显示 明显好于 连接数据库,在用户表执行查询获得指定id的用户返回的句柄,获取句柄游标指向的行并转换为数组,然后显示该数组。后者不但很长,明显不是人话,增加沟通成本。
总结:无论是对象还是函数,都是一种代码的组织形式,其目的是提高代码的可读性、使其易于维护。不同的人由于思维习惯的不同,其代码的组织形式可能不同,但是通常都是自洽的。(白话的说法,有人喜欢3句话描绘一件事情,具体实现时每句话又会拆分为3句话的描述,有人喜欢5句话描绘一件事情,具体实现时每句话又会拆分为5句话的描述,那么这两个人定义的对象/函数必然不同,但最后会得到相同的结果。)
常见的书本上的函数
f(x)=x+1;
更改到代码
function f(x)
{
return x+1;
}
如果还不理解,那初中就白上了
1.函数是一种映射关系,我们的输入对应一种输出(一般不强制限定为一种输出),输入可以为0。
2.函数是对可复用代码的封装。我么写的一段代码块,根据它的可复用性,去选择封装代码还是不封装代码,封装好了,就可以称之为函数。
3.函数是对编程的IPO模式的细节的隐藏。我们进行编程,肯定会遵循IPO模式,即输入-处理-输出。我们隐藏其中的处理过程时,只需要测试好输入和输出,就可以说封装了一个函数。
4.函数内部是组织好了的代码块。
总而言之,函数是一种封装了可复用代码的具有I/O映射关系的代码组织形式
谢邀。参考 wikipedia
In different programming languages, a subroutine may be called a procedure, a function, a routine, a method, or a subprogram. In computer programming, a subroutine is a sequence of program instructions that perform a specific task, packaged as a unit.
函数是子例程的别名。子例程是一段执行特定任务的程序操作,以封装好的单元形式存在。
通俗地说,函数是一段小程序,指定一定的参数,执行一段对参数或外部环境有影响的操作,并可选地返回一个值。
好处?自然是 D.R.Y(DONT REPEAT YOURSELF)了。它简化了相似性代码的书写,同时也使程序模块化,易于维护。
(这里的函数和数学里的函数还是不一样的好伐→_→→_→→_→→_→)
函数就是实现某种功能的代码片段的封装,比如: sum()函数,就是求和,求和就是功能,用
关键词 function 包起来的代码块或者片段,代码函数具体的代码,你不用知道,因为作者已经
给你封装好了,你只需要调用即可,sum(1,2) 的结果是3,你立即知道了结果,但你不用知道函数内部
的如何计算的
function sum($a=0,$b=0)
{
return $a+$b;
}
初中数学里的函数,你理解不?
一样一样的。
我觉得只要理解函数是什么作用即可,而不用过深的去了解函数这个概念本身!
因为程序语言中的“函数”本身也是一种封装,需要解释器统一对函数语法进行解析!
和你自己封装了一个函数给N个程序复用是一样的,没有太多的本质区别。
如果还不知道作用,你学习一门新的程序语言要打印hello world的时候,你发现程序语言没有给你封装一个叫做打印的函数,我不知道你当时是一种什么编程体验?
推荐阅读
-
javascript - 请问怎么理解计算机中的函数?
-
javascript 匿名函数的理解(透彻版)_javascript技巧
-
javascript - 请问bootstrap的data-content里面怎么加载百度编辑器?
-
javascript - 请问js对象如果字段是动态的,怎么取这个动态字段的值
-
javascript - 请问这个是怎么实现的
-
javascript - php 有什么函数是可以根据文件名称,来获取这个文件的全路径的吗?或者js 怎么获取文件的全路径?
-
深入理解JavaScript系列(4) 立即调用的函数表达式_javascript技巧
-
javascript回调函数的概念理解与用法分析
-
深入理解Javascript中的自执行匿名函数
-
javascript构造函数以及原型对象的理解