js函数基础知识
【函数的声明及调用】
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函数基础知识的更多相关文章
- css+js+html基础知识总结
css+js+html基础知识总结 一.CSS相关 1.css的盒子模型:IE盒子模型.标准W3C盒子模型: 2.CSS优先级机制: 选择器的优先权:!important>style(内联样式) ...
- 001/Node.js(Mooc)--基础知识
一.Node.js基础知识 node.js用C++语言编写. 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时 ...
- 10分钟学会Python函数基础知识
看完本文大概需要8分钟,看完后,仔细看下代码,认真回一下,函数基本知识就OK了.最好还是把代码敲一下. 一.函数基础 简单地说,一个函数就是一组Python语句的组合,它们可以在程序中运行一次或多次运 ...
- node.js的基础知识
第一部分知识: .命令行窗口(小黑屏).CMD窗口.终端.shell - 开始菜单 --> 运行 --> CMD --> 回车 - 常用的指令: dir 列出当前目录下的所有文件 c ...
- js的基础知识笔记
目录 一.基本数据类型 二.函数 三.面向对象 一.基本数据类型 1.使用var声明变量.使用;结尾.使用{}表示代码块.使用驼峰式命名 2.变量是弱类型的,即并不严格要求声明变量的类型,一个变量可以 ...
- 【JS】基础知识
引言 在互联网的演化过程中,网页制作是Web1.0时代的产物,那时网站的主要内容都是静态的,用户使用网站的行为也以浏览为主. 2005年以后,互联网进入了Web2.0时代,各类似桌面软件的Web应用大 ...
- 二、js中基础知识
该篇文章主要是强化一下自己javaScript的基础,让写代码变得更轻松些.基础好的请忽略. JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解 ...
- js函数基础回顾
回头又跑去看了下尚硅谷的js基础视频 https://www.bilibili.com/video/av22958172/?p=51. 便做了如下笔记: 1.函数也是一个对象 2.函数可以封装一些功能 ...
- JS的基础知识
前言:写前端代码时的各种取值纠结,让我决定我必须要好好学一下js............加油~ $("#tr"+id).remove() 删除某一行,而不用刷新页面 HightCh ...
随机推荐
- spring的Java配置入门(Spring Boot学习笔记之一)
spring的Java配置 1.创建maven项目 使用idea创建maven项目,这里顺便提一下,idea真的比eclipse好用,早点熟悉吧.然后就是maven是java项目管理最主流的工具,自己 ...
- 监听 window.open 打开的窗口关闭并回调
第三方的登录的解决方案通常有两种方式,一是打开一个新的标签页,然后登录回调回来: 二是通过父窗口打开一个子窗体去第三方登录,登陆成功时关掉子窗体回到父窗口. 问题来了 我的父窗体怎么样才知道子窗体被关 ...
- 关于 DropDownList 循环绑定中遇到的问题
1绑定DataTable 简单直接下部分就ok了 this.DropDownList1.DataSource = DataTable; this.DropDownList1.DataTextField ...
- 线性代数-矩阵-转置 C和C++的实现
原理解析: 本节介绍矩阵的转置.矩阵的转置即将矩阵的行和列元素调换,即原来第二行第一列(用C21表示,后同)与第一行第二列(C12)元素调换位置,原来c31与C13调换.即cij与cji调换 . (此 ...
- Hadoop百度百科
http://baike.baidu.com/link?url=-lfWMjGNGBJxKC1QKKhefXvB7Wou6Ztn8mgeZf8u-1iH5fcf25lbRfqpW1SGwOmQL0JI ...
- XMind入门教程
最近在总结一些框架知识的时候,总找不到一款好的软件来画流程图,后来在网上查找这方面的东西,找到了 XMind,发现用来画思维导图还挺好的,看起来思路清晰,美观.那么便将使用的一些经验分享给大家. 1. ...
- java值传递与引用传递实例
public class Test2 { public static void main(String[] args) { int[] arr=new int[5]; arr[0]=10; arr[1 ...
- 【grunt】两小时入门
目录: 1. 用途和场景 2.Grunt插件 3.相关资源 4.环境安装 5.开始学习 5.1 一个新项目 5.2 生成package.json 5.3 在项目中安装grunt和相关插件 5.4 Gr ...
- (三)、LNMP的搭建,并制作rpm包
中小型规模网站集群架构:yum仓库搭建 : 矮哥linux运维群:93324526 编译的三条命令的规则 ./configure 就是在本地创建了一个Makefile文件 (也就是指定一下各种配置参数 ...
- 【★】微信之于QQ的市场哲学
2016年的移动app下载排行榜出炉后,我们惊奇发现,前十名中有6个应用软件来自腾讯公司.而前两名毋庸置疑是远远碾压第三名的微信与qq.这让我们看到社交app的重要性的同时也回到了那个原始的问题:腾讯 ...