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 ...
随机推荐
- Es6 类的关键 super、static、constructor、new.target
ES6引入了Class(类)这个概念,作为对象的模板,通过class关键字,可以定义类.基本上,ES6的class可以看作只是一个语法糖,它的绝大部分功能,ES5都可以做到,新的class写法只是让对 ...
- ASP.NET Core 防止跨站请求伪造(XSRF/CSRF)攻击
什么是反伪造攻击? 跨站点请求伪造(也称为XSRF或CSRF,发音为see-surf)是对Web托管应用程序的攻击,因为恶意网站可能会影响客户端浏览器和浏览器信任网站之间的交互.这种攻击是完全有可能的 ...
- 使用javaconfig配置freemarker
package com.yy.config; import org.springframework.context.annotation.Bean; import org.springframewor ...
- zabbix上监控docker
说明 第一种方案,借助docker的python版的api,然后通过自己封装自定义脚本来做,稍微麻烦点,但是可以达到个人自定义的效果. 第二种借助国外的一位大神已经封装好的模板来做,简单省事情,不过功 ...
- The First Article
由于公司项目比较紧张,开始自己的博客之旅推迟了好几个月.今天终于按捺不住,申请了博客. 心中竟然有一丝丝兴奋,终于可以和众多博友们讨论分享我们一路走来的收获和感悟,记录下我们在工作中遇到和解决的问题, ...
- java多线程设计模式
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt220 java多线程设计模式 java语言已经内置了多线程支持,所有实现Ru ...
- Rehat一键安装mysql脚本和备份数据库脚本
Rehat一键安装mysql脚本 ##说明:适用,Rehat 5 6 7 1.运行状态,运行成功输出mysql临时密码 2.代码如下 #!/bin/bash #获取系统信息 sudo cat /etc ...
- 在windows中,使用SSH登录VMware ubuntu linux虚拟机
测试环境 主机:window7 sp1 64位 专业版 虚拟机:VMware workstation 12 player 虚拟机操作系统: ubuntu 16.4 目标:在ubuntu下运行SSH服务 ...
- JavaScript 父子页面相互调用总结
父子页面相互调用是一个在开发中经常遇到的问题,但是没有找到过比较全面的文章介绍.在此总结下来,供大家参考. 四种方式 一般情况下,我们可以使用iframe.window的open.showModalD ...
- 201521123113《Java程序设计》第8周学习总结
1. 本周学习总结 2. 书面作业 本次作业题集集合 Q1.List中指定元素的删除(题目4-1) 1.1 实验总结 remove函数中,开始我的写法是 for(int i=0;i<list.s ...