Js基础知识(作用域、特殊函数---自调、回调、作为值的函数)
15、作用域
概念: 规定变量或函数的可被访问的范围和生命周期
分类: 全局作用域 -就是指当前整个页面环境;
局部作用域(函数作用域) -就是指某个函数内部环境

l 变量的作用域
全局变量 - 定义在全局作用域中的变量;全局变量在任何位置均可访问
局部变量 - 定义在函数作用域中的变量;只能在该函数内访问该变量
- Ø 全局变量:
var a = ‘A’ ; ---全局变量 对比 | var a = ‘A’; ---全局变量
function fn ( ){ | function fn ( ){
a=’B’; ---全局变量[不加var, 会自动提升(不推荐)] | var a=’B’; ---局部变量
console.log(a); // ’B’ | console.log(a); // ’B’
} | }
fn( ); | fn( );
console.log(a); // ’B’ | console.log(a); // ’A’
- Ø 局部变量
var a = 'A'
function fn( ){
var b = 'B'; // 定义局部变量
console.log(a); // 输出 A 在局部作用域中访问全局变量a
console.log(b); // 输出 B 在局部作用域中访问局部变量b
}
fn( );
console.log(b); // 输出报错 在全局作用域中不可以访问局部变量b
【注:在局部作用域中可以访问全局变量,在全局作用域不可以访问局部变量】
² 按值传递:
将全局变量作为函数的实参传递给函数内部
* 函数的内部只是得到全局变量的值 - 不是全局变量
* 函数的内部操作形参的值时 - 不会影响全局变量
u 函数的作用域:
全局函数 - 定义在全局作用域的函数;
内部(私有)函数 - 定义在函数作用域的函数
全局函数与局部函数的作用域对比

16、特殊函数
匿名函数
概念:没有名的函数(没有名,也就无法调用) 注:语法上不许,编写报错,运行报错
eg: function ( ){ 应用于自调函数和回调函数
console.log('this is function');
}
( );
自调函数
概念:自己调用自己的函数(只能调用一次); 特点:只需要定义即可(定义即调用)
格式: ( )( ); 或 ( ( ) ); ---第一个小括号: 定义函数;第二个小括号: 调用函数
作用:用于优化所有全局变量和函数
eg: ( function(a,b){ console.log('this is song' + a); }) ( 1,2 ); //this is song 1
eg: ( function(a,b){ console.log('this is song' + a); } ( 1,2 )); //this is song 1
回调函数
概念:函数作为参数传递给另一个函数时,作为参数的函数被称之为回调函数
优点:
*可以在不做命名的情况下传递函数(这意味着可以节省全局变量)。
*可以将一个函数调用操作委托给另一个函数(这意味着可以节省一些代码编写工作)。
*同时也有助于提升性能。

匿名回调函数:匿名函数作为另一个函数的参数出现,即目前只有函数调用才会加( )
作为值的函数
概念:函数A作为函数B的结果进行返回,作为结果返回的函数A称为作为值的函数。
即将内部函数放到return语句
作用:在全局作用域中访问到内部函数 在全局作用域中访问到局部变量

Js基础知识(作用域、特殊函数---自调、回调、作为值的函数)的更多相关文章
- JS基础知识笔记
2020-04-15 JS基础知识笔记 // new Boolean()传入的值与if判断一样 var test=new Boolean(); console.log(test); // false ...
- [JS复习] JS 基础知识
项目结尾,空闲时间,又把<JS 基础知识> 这本书过了一遍,温故知新后,很多知其然不知其所以然的内容 豁然开朗. [1. 用于范围的标签] display :inline or bloc ...
- HTML+CSS+JS基础知识
HTML+CSS+JS基础知识 目录 对HTML+CSS+JS的理解 基础知识 对HTML+CSS+JS的理解 基础知识 插入样式表的三种方式 外部样式表:<link rel="sty ...
- Node.js基础知识
Node.js入门 Node.js Node.js是一套用来编写高性能网络服务器的JavaScript工具包,一系列的变化由此开始.比较独特的是,Node.js会假设在POSIX环境下运行 ...
- 网站开发进阶(十五)JS基础知识充电站
JS基础知识充电站 1.javascript alert弹出对话框时确定和取消两个按钮返回值? 用的不是alert对话框,是confirm confirm(str); 参数str:你要说的话或问题: ...
- NodeJs>------->>第三章:Node.js基础知识
第三章:Node.js基础知识 一:Node.js中的控制台 1:console.log.console.info 方法 console.log(" node app1.js 1> ...
- JS基础学习——作用域
JS基础学习--作用域 什么是作用域 变量的作用域就是变量能被访问到的代码范围,比如在下面的这个js代码中,变量a的作用域就是函数foo,因此在全局作用域内的console.log(a)语句不能访问到 ...
- 前端JS基础知识
1. 原型 / 构造函数 / 实例 原型(prototype): 一个简单的对象,用于实现对象的 属性继承.可以简单的理解成对象的爹.在 Firefox 和 Chrome 中,每个JavaScript ...
- [Js]基础知识
一.JavaScript组成 1.ECMAScript 解释器.翻译(提供功能有限,如加减乘除,定义变量.函数等) 几乎没有兼容性问题 2.DOM 有一些兼容性问题 3.BOM(用的少,交互 ...
随机推荐
- eclipse离线安装pydev
首先,下载去http://pydev.org/下载Python的Eclipse插件PyDev. 目前的最新版是PyDev 2.7.1.zip,将压缩文件解压出来.得到features和plugins两 ...
- win7/win10 未分配磁盘怎样创建扩展分区 也就是逻辑分区(转截)
我们有时候用windows7的磁盘管理工具对windows7系统分区管理的时候,我们可能会不小心把我们的电脑硬盘扩展分区都删除了,扩展分区变为了未分配的空间,这时候如果我们新建分区的话,建立的都是主分 ...
- day22 包,相对/绝对路径
目录 包 包被导入时发生的三件事 为什么要有包 相对路径 绝对路径 包 包是一个文件夹,也是一个模块,只是为了区分单个文件的模块,称之为包.因为单纯的文件夹无法作为模块,文件夹内的__init__.p ...
- 2104 -- K-th Number
Description You are working for Macrohard company in data structures department. After failing your ...
- java中Map遍历的四种方式
在java中所有的map都实现了Map接口,因此所有的Map(如HashMap, TreeMap, LinkedHashMap, Hashtable等)都可以用以下的方式去遍历. 方法一:在for循环 ...
- 使用kubeadm在CentOS上搭建Kubernetes1.14.3集群
练习环境说明:参考1 参考2 主机名称 IP地址 部署软件 备注 M-kube12 192.168.10.12 master+etcd+docker+keepalived+haproxy master ...
- 解决SpringBoot+JPA中使用set方法时自动更新数据库问题
项目进行了三分之二了,突然出现一个很诡异的bug,数据库存储的用户表中密码信息总是自动消失一部分,头疼了几天后突然想起同事有个对低权限用户查询的用户信息向前台传送时会把密码设成null后再传输,心想是 ...
- laravel使用JWT做API认证
最近项目做API认证,最终技术选型决定使用JWT,项目框架使用的是laravel,laravel使用JWT有比较方便使用的开源包:jwt-auth.php 后端实现JWT认证方法 使用composer ...
- 【codeforces 807A】Is it rated?
[题目链接]:http://codeforces.com/contest/807/problem/A [题意] 给你n个人在一场CF前后的rating值; 问你这场比赛是不是计分的 [题解] 如果有一 ...
- OA项目知识总结2
BaseAction的抽取 项目中的每个实体类都对应一个action 每个action都都要继承ActionSupport类 已以及实现ModelDriver接口 并且需要注入service 虽然 ...