(小白)函数一: 声明函数的方法—语句定义法和表达式定义法的区别

一、函数的定义:

在说明什么是函数前先举一个小例子:

大家都知道印刷术是我国的四大发明(科普一下:中国四大发明:造纸术、印刷术、火药、指南针)之一,之所以有印刷术,是因为重复的抄写既浪费时间,效率又很低,所以印刷术应用而生,印刷术就像一个工具,有了这个工具,我们就不需要再重复的去抄写一些一模一样的内容。

今天所说的函数就类似于印刷术,我们在书写代码时发现,在实现同一个功能时,所用的代码几乎是一样的,因为实际需要,所以不得不重复的去书写一样的代码,这时我们书写的代码看起来很冗杂,会占据内存空间,解析的时间也会很长,所以,为了使我们的代码书写的更美观,我们可以将我们的代码封装起来,给它一个命名,放在一个独立的模块里,需要使用时拿过来就OK了!

比如说我们在不使用任何循环语句直接想打印5次“hello world!”时,这时我们就需要重复输出5次“hello world!”,代码如下:

document.write(('hello world!')+"</br>");
document.write(('hello world!')+"</br>");
document.write(('hello world!')+"</br>");
document.write(('hello world!')+"</br>");
document.write(('hello world!')+"</br>");
接下来我们封装一个函数来打印“hello world!”
function helloworld(){
document.write(('hello world!')+"</br>");
}
helloworld()
helloworld()
helloworld()
helloworld()
helloworld()
很明显:我们用函数来打印“hello world”,不用再重复的书写一样的代码,只需要使用的时候调用就OK了!

函数的定义:需要反复使用的功能代码,封装成一个独立的模块,这个模块就叫函数。

二、声明函数的方法:

function来定义函数

我们了解了什么是函数后,接着来看一下怎么声明函数,通俗点说就是怎么使用这个函数:

1.语句定义法:

其实我们在打印“hello world”时使用的方法就是语句定义法

格式:function 函数名(){

     函数块;

}

调用:函数名()

2.表达式定义法:

一说表达式,肯定是和赋值有关,我们可以大胆的猜想一下,表达式定义法是不是就是我们将一个函数赋值给了一个变量呢?

看一下它的格式:

var 变量名 = function[函数名](){

    函数块;

}

调用:变量名()

注意:var后面的是它声明的这个变量的变量名,不是函数名,函数名还是在function后面,之所以将函数名写在[]中,是因为在表达式定义法中,函数名是可以省略的,通常情况下,函数名我们也都是省略不写的。

语句定义法和表达式定义法在以后的使用中,语句定义法会更常用。

为什么说语句定义法更常用呢,这就要说一下语句定义法和表达式定义法的区别了:

3、语句定义法和表达式定义法的区别:

语句定义法会提升函数,会在执行代码前读取函数声明,通俗讲就是我们可以在任何位置调用这个函数;

//person() 函数前调用     //张三
function person(){
var name = "张三";
alert(name);
}
person() //函数后调用    //张三

表达式定义法不会提升函数,必须先声明函数,再调用;

//person(); 报错:控制台输出person is not a function
var person = function(){
var name = "张三";
alert(name);
}
person(); //张三

转载于:https://www.cnblogs.com/kinoko-1009/p/10272047.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/395444.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android限制输入字符的范围,Android EditText 对输入字数和内容范围进行限制

在做定制机时&#xff0c;对光敏值进行范围控制时&#xff0c;以及对区号输入时遇到对输入字数以及输入内容的显示。找了好多方法&#xff0c;终于找到了几种方法其中EditText的addTextChangedListener功不可没。例如对光敏值要在0到61之间。大于61时要在输入框中自动变为61.代…

vue13过滤器 debounce延迟、limitBy、filterBy、orderBy

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>智能社——http://www.zhinengshe.com</title><meta name"viewport" content"widthdevice-width, initial-scale1.0, maximum…

Sass:一种CSS预处理器语言

http://sass-lang.com/ Sass是一种CSS预处理器语言&#xff0c;通过编程方式生成CSS代码。因为可编程&#xff0c;所以操控灵活性自由度高&#xff0c;方便实现一些直接编写CSS代码较困难的代码。 同时&#xff0c;因为Sass是生成CSS的语言&#xff0c;所以写出来的Sass文件是不…

Python学习(五)列表的简单操作

#!/usr/bin/env python#_*_coding:utf8_*_# 操作列表# for循环nbaStars [yaoming,kobe,manu,23,the klaw]for nbaStar in nbaStars: print(nbaStar)nbaStars [yaoming,kobe,manu,str(23),the klaw] # 这里有 int 对象&#xff0c;没有title方法的for nbaStar in nbaStars:…

node seneca_使用Node.js和Seneca编写国际象棋微服务,第3部分

node senecaFinishing up a three-part series on writing a rules engine with Seneca microservices.完成有关使用Seneca微服务编写规则引擎的三部分系列文章。 Parts 1 & 2 of this series covered:本系列的第1部分和第2部分涉及&#xff1a; The Seneca microservice…

Android开发画布销毁,Android DialogFragment 在页面销毁下的使用方式

今天看到了一篇文章,讲了DialogFragment的封装方式(Android&#xff1a;我为何要封装DialogFragment&#xff1f;),想到当初也为页面销毁后DialogFragment的回调方式头疼了好久,看到了po主的思路,与当初自己想的不太一样,就整理一下.如何在开发中遇到页面销毁的情况在android开…

视觉智能产品发布 阿里云这项世界第一的技术现在人人可用

用手机拍下朋友的相片&#xff0c;软件会自动识别进行分类并将照片发送给朋友。这不是空想&#xff0c;利用视觉智能对手机相册进行管理、分类和分享正逐步成为现实。在6月10日举行的云栖大会上海峰会上&#xff0c;阿里云正式发布了“图像识别”和“人脸识别”两款视觉智能服务…

ViewPager中Fragment的重复创建、复用问题

在ViewPager中的Fragment的生命周期 随着页面的切换 当前的展示页相邻的页面生命周期一直在变化 一开始 刚进入Activity时候&#xff0c;ViewPager默认初始化好前两个Fragment&#xff08;消息和任务&#xff09; 消息 ->任务 05-09 14:47:39.593 31509-31509/tyh.com.tabl…

使用VB.net建立excel文件

Add the following code snippet on top of Form1.vb Imports Excel Microsoft.Office.Interop.Excel Public Class Form1Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.ClickDim appXL As Excel.Application 声明一个application对象Dim wbX…

沙盘演练工作坊-产品开发_Google认证的Android助理开发人员:考试演练

沙盘演练工作坊-产品开发by Rohan Taneja由Rohan Taneja Google认证的Android助理开发人员&#xff1a;考试演练 (Google Certified Associate Android Developer: Exam Walkthrough) UPDATE (24th July, 2018)更新(2018年7月24日) The certification exam is available agai…

linux hlist,linux内核V2.6.11学习笔记(2)--list和hlist

这两个数据结构在内核中随处可见,不得不拿出来单独讲讲.这两个数据结构都是为了方便内核开发者在使用到类似数据结构的时候不必自行开发(虽然不难),因此它们需要做到足够的"通用性",也就是说,今天可以用它们做一个存放进程的链表,明天同样可以做一个封装定时器的链表…

14-angular.isDefined

判断括号内的值是否存在。 格式&#xff1a; angular.isDefined(value); value: 被判断是否存在的值。 返回值&#xff1a; true/false转载于:https://www.cnblogs.com/ms-grf/p/6978886.html

实施工程师1分钟即时演讲_我是如何在1年内从时装模特转变为软件工程师的

实施工程师1分钟即时演讲In 2015 I knew almost nothing about coding. Today, I’m a software engineer and a teacher at a code school for kids.在2015年&#xff0c;我对编码几乎一无所知。 今天&#xff0c;我是一名软件工程师&#xff0c;还是一所代码学校的儿童老师。…

MSSQL分组取后每一组的最新一条记录

数据库中二张表&#xff0c;用户表和奖金记录表&#xff0c;奖金记录表中一个用户有多条信息&#xff0c;有一个生效时间&#xff0c;现在要查询&#xff1a; 奖金生效时间在三天前&#xff0c;每个用户取最新一条奖金记录&#xff0c;且用户末锁定 以前用的方法是直接写在C#代…

android模拟器插件,Android模拟器插件找不到android SDK

首先&#xff0c;克隆项目詹金斯一直输出后&#xff1a;[android] No Android SDK found; lets install it automatically...[android] Going to install required Android SDK components...[android] Installing the platform-tool,tool SDK component(s)...$ /var/lib/jenki…

读书笔记--模板与泛型编程

了解隐式接口和编译期多态 编译期多态和运行期多态 运行期多态就好比是virtual函数再运行的时候才确定该virtual函数该被绑定为哪个函数&#xff0c;运行的时候才确定函数类型。  编译期多态就好比是泛型编程和模板编程中&#xff0c;在编译的时候才确定哪个函数该被调用&…

栈和递归的关系 144:Binary Tree Preorder Traversal

前序遍历&#xff1a;根左右 //用栈来实现非递归解法/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/ class Solution { public:vec…

运行级别

ls -l /usr/lib/system/runlevel*target &#xff08;查看运行级别&#xff09;Linux系统有7个运行级别(runlevel)运行级别0&#xff1a;系统停机状态&#xff0c;系统默认运行级别不能设为0&#xff0c;否则不能正常启动运行级别1&#xff1a;单用户工作状态&#xff0c;roo…

微信sdk swift版_使用Swift 4的iOS版Google Maps SDK终极指南

微信sdk swift版by Dejan Atanasov通过Dejan Atanasov 使用Swift 4的iOS版Google Maps SDK终极指南 (Your ultimate guide to the Google Maps SDK on iOS, using Swift 4) Many iOS apps use Google Maps. This is a very common feature, so I have decided to prepare an u…

精确覆盖DLX算法模板

代码 struct DLX {int n,id;int L[maxn],R[maxn],U[maxn],D[maxn];int C[maxn],S[maxn],loc[maxn][2];void init(int nn0) //传列长{nnn;for(int i0;i<n;i) U[i]D[i]i,L[i]i-1,R[i]i1;L[0]n; R[n]0;idn;memset(S,0,sizeof(S));}void AddRow(int x,int col,int A[]) //传入参…