【函数的声明及调用】
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. 一起来学Go --- (go的简介以及环境的安装)

    Go 相信大家,看到这篇文章的时候,已经自己在百度百科了解了go的发展史已经特性,再次我依然....得哔哔叨一会.   ^.^ go语言的特性 go语言作为一门静态类型开发语言,与当前的开发语言想必具 ...

  2. face ++ 人脸识别技术初步

    网站地址: https://console.faceplusplus.com.cn/documents/5671791主要有        1  人脸识别技术         2    人体识别技术  ...

  3. Andrew Ng机器学习课程笔记--week9(上)(异常检测&推荐系统)

    本周内容较多,故分为上下两篇文章. 一.内容概要 1. Anomaly Detection Density Estimation Problem Motivation Gaussian Distrib ...

  4. 微信小程序周报(第十三期)-极乐商店(store.dreawer.com)出品

    重要:极乐商店域名变更:wxapp.dreawer.com/变更为store.dreawer.com/ 每周一笑 当年刚学打篮球的时候,疯狂地迷恋上了乔丹,然后迷恋上了NIKE,更熟记了NIKE的那句 ...

  5. python+selenium自动化软件测试(第12章):Python读写XML文档

    XML 即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进 行定义的源语言.xml 有如下特征: 首先,它是有标签对组成:<aa></aa> ...

  6. 2D 和 3D 中的 CSS 轉換 (Preliminary) CSS3中 translate3D详解

    http://www.zhangxinxu.com/wordpress/2012/09/css3-3d-transform-perspective-animate-transition/ http:/ ...

  7. Django数据库操作(增删改查)

    Django数据库操作(增删改查) 创建数据库中的一个表 class Business(models.Model): #自动创建ID列 caption = models.CharField(max_l ...

  8. 面试题收集---grep和find的区别

    grep是通过文件找内容 find 是通过内容找文件 Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来. 而linux下的find, 在目录结构 ...

  9. Ext.Ajax.request

    function create(){ var itstate = $("#myselect").val(); Ext.Ajax.request({ url: '/servlet/A ...

  10. selenium python自动化测试 ddt数据驱动

    安装ddt  pip install ddt 直接上代码: # coding:utf-8 import ddt import time import excelunit import unittest ...