<!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. yarn 单点故障 重启 ResourceManger Restart

    http://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/ResourceManagerRestart.html Featur ...

  2. AndroidStudio制作Nine-Patch【.9】图片

    使用AndroidStudio制作Nine-Patch[.9]图片,以及为什么要制作Nine-Patch[.9]图片[以聊天气泡为例]   本文链接:https://blog.csdn.net/She ...

  3. Ionic4.x 中的 UI 组件(UI Components) 侧边栏ion-menu组件以及底部tabs结合 侧边栏 ion-menu

    1.侧边栏 ion-menu 组件的基本使用 1.创建项目 ionic start myApp sidemenu 2.配置项目 属性 作用 可选值 side 配置侧边栏的位置 start end me ...

  4. 【集成模型】Boosting

    0 - 思想 Bagging算法思想是减少预测方差(variance),Boosting算法思想是为了减少预测偏差(bias). Boosting算法思想是将“弱学习算法”提升为“强学习算法”.一般来 ...

  5. MySQL中表的复制以及大型数据表的备份教程

    MySQL中表的复制以及大型数据表的备份教程     这篇文章主要介绍了MySQL中表的复制以及大型数据表的备份教程,其中大表备份是采用添加触发器增量备份的方法,需要的朋友可以参考下 表复制 mysq ...

  6. webpack——Modules && Hot Module Replacement

    blog:JavaScript Module Systems Showdown: CommonJS vs AMD vs ES2015 官网链接: Modules 官网链接:Hot Module Rep ...

  7. Git——起步(待续)

    原文链接:Getting Started with Git

  8. 【417】一条语句编译并执行C语言

    参考:shell学习笔记(1)Linux下在一行执行多条命令 要实现在一行执行多条Linux命令,分三种情况: 1.&& 举例: lpr /tmp/t2 && rm / ...

  9. spring-core-5.0.6.RELEASE-sources.jar中java源代码不全

    笔者最近在调试一段代码,进入spring-core以后,IDEA帮我反编译出源码,其中MethodProxy.java如下 // // Source code recreated from a .cl ...

  10. 微信小程序之对象转化为数组

    对象转成数组方式一(数组里面是一个个number类型的元素) let dictObject= { , , , , }; // 对象转成数组方式一 var createArr = [] for (let ...