【函数的声明及调用】
function 函数名(参数1,参数2,....){
//函数体代码
return返回值;
}

1、函数的调用:
①直接调用:函数名(参数1的值,参数2的值,....)
②事件调用:在HTML标签中,使用事件名="函数名()"
<button onclick="saysth('哈哈哈','yellow')">点击按钮,打印内容</button>


2、函数的命名规则

①函数名必须要符合小驼峰法则!!首字母小写,之后每个单词首字母大写;
②函数名后面的()中,可以有参数,也可以没有参数,分别称为有参参数,和无参参数
③声明函数时的参数列表,称为形参列表,形式参数。(变量的名字)
function saysth(str,color){}
调用函数时的参数列表,称为实参列表,实际参数。(变量的赋值)
saysth("你真帅!!","red")

④函数的形参列表的个数,与实参列表个数。没有实际的关联关系。
函数参数的个数,取决于实参列表。
如果实参列表的个数<形参列表,则未赋值的形参,将为undefined>

⑤函数可以有返回值,使用return返回结果,调用函数时,可以使用一个变量接受函数的返回结果,如果函数没有返回值,则接受的结果为undefined;
function func(){
return "haha";
}
var num=func(); // num="haha"
⑥函数变量的作用域;
在函数中,使用var声明的变量为局部变量,只能在函数内部访问:
不使用var声明的变量,为全局变量,在函数外面也能访问:
函数的形参列表,默认为函数的局部变量,只能在函数内部使用,


⑦函数的声明与函数的调用,没有先后之分,即,可以再声明函数前,调用函数;
func();//声明func之前调用也是可以的。
function func(){}

【匿名函数的声明使用】
1、声明一个匿名函数,直接赋值给某一个事件;
window.onload = function(){}

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

js代码在执行的顺序问题
js代码在运行时,会分为两大部分,奸诈装载和执行阶段,
检查装载阶段:会线检测代码的语法错误。进行变量,函数的声明。

执行阶段,变量的赋值,函数的调用,都属于执行阶段,

以下代码为例
console.log(num);//undefined
var num = 10;

func1(); //函数可以正常执行
function func1(){}

func2(); //函数不能执行,打印func2是显示为undefined
var func2 = function(){}


检查装载阶段
console.log(num)
function func1(){}
var func2

代码执行阶段
console.log(num);//undefined
var num = 10;
func2();
func2 = function(){}



注意使用匿名函数表达式时,函数的调用语句,必须放在函数声明语句之后!!!(与普通函数的区别)


3、自执行函数
①!function(){}();可以使用多种运算符开头。但一般用!
!function(形参列表){}(实参列表);
②(function(){}())使用小括号将函数及函数后的括号包裹起来
③(function(){}) ()使用小括号将函数包裹起来
三种写法的特点
①第一种结构清晰,不容易混乱,推荐使用。
②第二种写法能够表明匿名函数与调用的()为一个整体,官方推荐使用。
③无法表明函数与之后的()的整体星,不推荐使用。

[函数的内部属性]
1、arguments对象
①英语储存调用函数时的所有实参,当我们调用函数并用实参赋值时,实际上参数列表已经保存到arguments数组中,可以在函数中,使用arguments数组中,可以在函数中,使用arguments[n]的形式调用,n从0开始;
argument数组的个数,取决于实参列表,与形参无关
但是,一旦第n个位置的形参、实参、arguments都存在时,形参将与arguments绑定,同步变化(即在函数中修改形参的值)arguments也会改变,反之,也成立


arguments.callee()是arguments的重要指标,表示arguments所在函数的引用地址,
在函数里面,可以使用arguments.callee();调用函数本身
在函数内部,调用函数本身的写法,叫做递归
递归分为两部分,递与归,以递归调用语句为界限,可以将函数分为上下两部分
递是当函数执行上半部分是,遇到自身的调用语句时,继续进入内层函数,在执行上半部分,知道执行完最内层函数。
归,当最内层函数执行以后,在从最内层函数开始,逐渐执行函数的下半部分,
当最外层函数执行时,遇到自身的调用语句,会进入内层函数执行,二外层函数的后半部分暂不执行,知道最内层函数执行完以后,在逐步向外执行。

js函数基础知识的更多相关文章

  1. css+js+html基础知识总结

    css+js+html基础知识总结 一.CSS相关 1.css的盒子模型:IE盒子模型.标准W3C盒子模型: 2.CSS优先级机制: 选择器的优先权:!important>style(内联样式) ...

  2. 001/Node.js(Mooc)--基础知识

    一.Node.js基础知识 node.js用C++语言编写. 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时 ...

  3. 10分钟学会Python函数基础知识

    看完本文大概需要8分钟,看完后,仔细看下代码,认真回一下,函数基本知识就OK了.最好还是把代码敲一下. 一.函数基础 简单地说,一个函数就是一组Python语句的组合,它们可以在程序中运行一次或多次运 ...

  4. node.js的基础知识

    第一部分知识: .命令行窗口(小黑屏).CMD窗口.终端.shell - 开始菜单 --> 运行 --> CMD --> 回车 - 常用的指令: dir 列出当前目录下的所有文件 c ...

  5. js的基础知识笔记

    目录 一.基本数据类型 二.函数 三.面向对象 一.基本数据类型 1.使用var声明变量.使用;结尾.使用{}表示代码块.使用驼峰式命名 2.变量是弱类型的,即并不严格要求声明变量的类型,一个变量可以 ...

  6. 【JS】基础知识

    引言 在互联网的演化过程中,网页制作是Web1.0时代的产物,那时网站的主要内容都是静态的,用户使用网站的行为也以浏览为主. 2005年以后,互联网进入了Web2.0时代,各类似桌面软件的Web应用大 ...

  7. 二、js中基础知识

    该篇文章主要是强化一下自己javaScript的基础,让写代码变得更轻松些.基础好的请忽略.    JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解 ...

  8. js函数基础回顾

    回头又跑去看了下尚硅谷的js基础视频 https://www.bilibili.com/video/av22958172/?p=51. 便做了如下笔记: 1.函数也是一个对象 2.函数可以封装一些功能 ...

  9. JS的基础知识

    前言:写前端代码时的各种取值纠结,让我决定我必须要好好学一下js............加油~ $("#tr"+id).remove() 删除某一行,而不用刷新页面 HightCh ...

随机推荐

  1. 细说 Azure Storage 的冗余策略

    当我们想要把应用搬到云端的时候,首先要关注的便是数据的安全性.当然所有的云服务厂商都会对用户数据承诺一个非常高的安全性,但万一出现意外呢?我们是不是还要有适当的应对方案?比如今年的3月8日晚间,Azu ...

  2. CNAME关联githubPage域名及中文域名,创建个人网站

    对于前端开发来说,部署一个自己的个人网站部署服务器等比较麻烦,如果只是做静态页面的展示GitHubPage完全够用,而且有300M免费的空间,完全满足需求. 首先你要有GitHubPage项目,具体怎 ...

  3. Andrew Ng机器学习课程笔记--week2(多元线性回归&正规公式)

    1. 内容概要 Multivariate Linear Regression(多元线性回归) 多元特征 多元变量的梯度下降 特征缩放 Computing Parameters Analytically ...

  4. 关于 Go 中 Map 类型和 Slice 类型的传递

    关于 Go 中 Map 类型和 Slice 类型的传递 Map 类型 先看例子 m1: func main() { m := make(map[int]int) mdMap(m) fmt.Printl ...

  5. oracle导库

    cmd窗口直接输入导库命令即可,不需要进入sqlplus C:\Documents and Settings\Administrator> imp username/pass@orcl file ...

  6. MySQL(四)之MySQL数据类型

    一.数据类型概述 MySQL的数据类型有大概可以分为5种,分别是 整数类型.浮点数类型和定点数类型.日期和时间类型.字符串类型.二进制类型.现在可以来看看你对这5种类型的熟悉程度,哪个看起来懵逼了,那 ...

  7. sleep(强制等待)和implicitly_wait(隐式等待 )区别与理解---基于python

    我们在进行selenium页面自动化的测试的时候,由于需要等待目标页面的加载或由于网络或硬件配置导致的页面加载等待,经常会用到sleep,但是由于在不同场景下对于sleep时间的估计无法十分准确,导致 ...

  8. oracle12c之 单机12.1.0.1打补丁

    1. 下载最新的12.1.0.1的DB PSU 与 OPatchp23054354_121010_Linux-x86-64.zipp6880880_121010_Linux-x86-64.zip 2. ...

  9. 猎八哥浅谈MYSQL触发器

    什么是MYSQL触发器,我们先了解一下触发的意思.触发的字面意思是指因触动而激发起某种反应. MYSQL必知必会中对触发器的解释是:MySQL响应以下任意语句而自动执行的一条MySQL语句(或位于 B ...

  10. 封装bootstrap-treegrid组件

    封装bootstrap-treegrid组件   阅读目录 一.开源的treegrid 1.组件效果预览 2.组件开源地址 二.封装treegrid 1.组件封装的必要性 2.组件封装代码示例 3.封 ...