<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript"> /*
* 函数作用域
*
* - 调用函数时创建函数作用域,函数执行完毕以后,函数作用域销毁
*
* - 每调用一次函数就会创建一个新的函数作用域,他们之间是互相独立的
*
* - 在函数作用域中可以访问到全局作用域的变量
* 在全局作用域中无法访问到函数作用域的变量
*
* - 当在函数作用域操作一个变量时,它会先在自身作用域中寻找,如果有就直接使用
* 如果没有则向上一级作用域中寻找,直到找到全局作用域,
* 如果全局作用域中依然没有找到,则会报错ReferenceError
*
* - 在函数中要访问全局变量可以使用window对象
*/ //创建一个变量
var a = 10; function fun(){ var a = "我是fun函数中的变量a";
var b = 20; console.log("a = "+a); //a = 我是fun函数中的变量a function fun2(){
console.log("a = "+a);//a = 我是fun函数中的变量a
//不加window就是就近原则,加就是全局的
console.log("a = "+window.a);//a = 10
} fun2(); } fun();
console.log("a = "+a);//a = 10
//在全局作用域中无法访问到函数作用域的变量
//console.log("b = "+b);//Uncaught ReferenceError: b is not defined //-------------------------------------------------------------------------------- /*
* 在函数作用域也有声明提前的特性,
* 使用var关键字声明的变量,会在函数中所有的代码执行之前被声明
* 函数声明也会在函数中所有的代码执行之前执行
*/ function fun3(){ fun4(); console.log(a);//undefined var a = 35; function fun4(){
alert("I'm fun4");
} } fun3(); //-------------------------------------------------------------------------------- var c = 33; /*
* 在函数中,不使用var声明的变量都会成为全局变量
*/
function fun5(){ console.log("c = "+c);//c = 33
c = 10; //d没有使用var关键字,则会设置为全局变量
d = 100;
} fun5(); //在全局输出c
console.log("d = "+d);//d = 100 //-------------------------------------------------------------------------------- var e = 23; /*
* 定义形参就相当于在函数作用域中声明了变量
*/
function fun6(e){
console.log("e = "+e); //e = undefined,相当于在函数作用域里面声明了一个变量var e;
} fun6(); </script>
</head>
<body>
</body>
</html>

JS基础_函数作用域的更多相关文章

  1. JS基础_函数作用域练习

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. JS基础_全局作用域

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. JS基础_函数的简介

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. JS基础_函数的返回值

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  5. JS基础_函数的参数

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. JS _函数作用域及变量提升

    虽然看了多次js函数作用域及变量提升的理论知识,但也是一知半解~ 这几天做了几道js小题,对这部分进行了从新的理解,还是有所收获的~ 主要参考书籍: <你不知道的JavaScript(上卷)&g ...

  7. Js基础知识(作用域、特殊函数---自调、回调、作为值的函数)

    15.作用域 概念: 规定变量或函数的可被访问的范围和生命周期 分类: 全局作用域 -就是指当前整个页面环境: 局部作用域(函数作用域) -就是指某个函数内部环境 l 变量的作用域 全局变量 - 定义 ...

  8. JS基础_变量提升和函数提升

    1.在函数中,不使用var声明的变量都会变为全局变量 function fun(){ d=10; //window.d=10; }; console.log(10);//10 2.定义形参就相当于在函 ...

  9. JS基础-运算符-函数

    1.运算符  1.赋值运算符和扩展运算符    1.赋值运算符 =    2.扩展运算符      +=,-=,*=,/=,%=,^=....      ex:        a=a+b;--> ...

随机推荐

  1. Android插件化(六): OpenAtlasの改写aapt以防止资源ID冲突

    Android插件化(六): OpenAtlasの改写aapt以防止资源ID冲突 转 https://www.300168.com/yidong/show-2791.html   核心提示:引言And ...

  2. TreeSet和TreeMap不能存放重复元素?能不能存放null?其实不是这样的——灵活的二叉树

    TreeSet和TreeMap不能存放重复元素?能不能存放null?其实不是这样的——灵活的二叉树   本文链接:https://blog.csdn.net/u010698072/article/de ...

  3. SQL语言Select经典语句

    -- 示例数据 Select * From Employee Select * From Department -- 返回工资最高的员工的信息 Select * From Employee where ...

  4. npm教程、脚手架

    使用之前,我们先来掌握3个东西是用来干什么的. npm: Nodejs下的包管理器. webpack: 它主要的用途是通过CommonJS的语法把所有浏览器端需要发布的静态资源做相应的准备,比如资源的 ...

  5. SpringCloud学习成长之 十一 Docker部署cloud项目

    一.docker简介 Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机). ...

  6. Delphi ADOQuery的速度优化

    今天终于把纠缠了几天的问题改完了,说到底只是一个很小的问题,就是ADOQuery的一个小属性. 把控件DBGridEh的一列的checkbox设为true,将其绑定DataSource和ADOQuer ...

  7. c#操作json数据使用newtonsoft.json

    开源项目提供的一个读取示例 using System; using System.Collections.Generic; using System.IO; using System.Linq; us ...

  8. weblogic搭建总结

    目录: 一.安装weblogic软件 二.创建域 三.启动管理节点 四.创建被管理节点 五.部署应用 一.安装weblogic软件 一.关闭selinux和防火墙 service iptables s ...

  9. docker(学习笔记)

    # 1. Docker介绍## 1.1 什么是容器?## 1.2 容器的前世今生FreeBASE jail ------> Linux vserverchroot ----> 完整的根文件 ...

  10. 6年DotNet码农的盲目经历

    前言   第一篇没有选择记录与技术相关的文档,是考虑到有必要给查阅这篇文档的伙伴们“自我介绍”一下,大佬们看了求带或指导,我很愿意学习,初学者们看了千万不要重复走我之前的“学习之路”:我老家贵州,再过 ...