精选文章 js,javascript作用域, 全局局部作用域, 全局变量和局部变量, 块级作用域, 作用域链

js,javascript作用域, 全局局部作用域, 全局变量和局部变量, 块级作用域, 作用域链

作者:^smile 时间: 2021-02-05 09:43:16
^smile 2021-02-05 09:43:16
【摘要】1.javaScript作用域 
2.全局作用域(函数作用域) 局部作用域(函数作用域) 
3.全局变量和局部变量 
4.块级作用域 
5.作用域链 
 
 
     
 
 
1.预解析 
2.变量预解析和函预解析 
 
 
 
     
     
    Document

1.javaScript作用域

2.全局作用域(函数作用域) 局部作用域(函数作用域)

3.全局变量和局部变量

4.块级作用域

5.作用域链

<script>

// 1.javaScript作用域:就是代码名字(变量)在某个范围内起作用和效果,

// 目的就是为了提高程序的可靠性更重要的是减少命名冲突

//2. js的作用域es6之前:全局作用域 局部作用域

// 3.全局作用域:整个script标签 或则是一个单独的的js文件

// 4.局部作用域(函数作用域)在函数内部就是局部作用域,这个代码的名字只在函数内部起效果和作用,定义在函数中的参数和变量在函数外部是不可见的。

function fn(){

//局部作用域

var num=20;

console.log(num);

}

fn()

   

// 5.变量的作用域:根据作用域的不同我们变量分为全局变量和局部变量

// 1.全局变量:在全局作用域下的变量,在全局下都可以使用

// 注意:如果在函数内部 没有声明直接赋值的变量也属于全局变量

var num=10; //num就是一个全局变量

console.log(num);

function num(){

console.log(num);

}

num()

 

// 2.局部变量 在全局作用域下的变量,   局部变量,只能在函数内部使用

//  注意:函数的形参也是局部变量

console.log(arg);

function fun(arg){

var num1=10;  //num1就是局部变量,只能在函数内部使用

num2=20; //num2就是全局变量

}

fun()

console.log(num1);  //报错

console.log(num2);

 

//  3.从执行效率来看全局变量和局部变量

// (1)全局变量只有浏览器关闭的时候才会销毁,比较占内存

// (2)局部变量 当我们程序执行完毕机会销毁,节省内存资源


 

//  js中没有块级作用域 js的作用域:全局作用域和局部作用域 现阶段我们js没有块级用于与

//  我们的js也是在 es6的时候新增的块级作用域

// 块级作用域{} if() for{}

// 什么是块级作用域呢?

// 任何一对花括号({和})中的语句集都属于一个块,在这之中定义的所有变量在代码块外都是不可见的,我们称之为块级作用域。

 

if(3<5){

var num=10;

}

console.log(num);

 

//5. 作用域链

// 只要是代码,就至少有一个作用域

// 卸载函数内部的局部作用域

// 如果函数中还有函数,那吗在这个作用域中就可以诞生一个作用域

// 根据在内部函数可以访问外部函数变量的这种机制,用链式查找决定哪些数据

// 能被内部访问,就成作作用域链

 

// 作用域链:内部函数访问外部函数的变量,采取的是链式查找的方式来决定取哪个值,这种结构我们称为作用域链

var num=10;

function fn(){ //外部函数

var num=20;

function fun(){  //内部函数

console.log(num);

}

fun()

}

fn()

</script>

1.预解析

2.变量预解析和函预解析

Document

<script>
 

// 预解析

// javascript代码是由浏览器中的javascript解析器来执行的,javascript解析器在运行

// javascript代码的时候分为两步:预解析和代码执行

 

// 变量预解析和函预解析

// 1.我们js引擎运行js分为两步:预解析与代码执行

// (1)预解析js引擎会把js里面所有的var还有function提升到当前作用域的最前面

// (2)代码执行:按照代码书写的顺序从上往下执行

// 2.预解析分为 变量预解析(变量提升)和函数预解析(函数提升)

// (1)变量提升 就是把所有的变量声明到当前的作用域最前面 不提升赋值操作

//  (2)函数提升:就是把所有的函数声明提升到当前作用域的最前面,不调用函数


 

console.log(num); //undefined

 

// 2.

console.log(num);  //undefined

var num=10;

// 相当于执行了(变量提升)

// var num;

// console.log(num)

// num=10;


 

// 3.

fn()  //11

function fn(){

console.log(11);

}

// 4.

fun();//报错

var fun=function(){

console.log(22);

}

// 相当于执行了(变量提升)

// var fun;

// fun();

// fun=function(){

// console.log(22);

// }

</script>

勿删,copyright占位
分享文章到微博
分享文章到朋友圈

上一篇:卜若的代码笔记-一周搞定树莓派-第十九章:树莓派使用Git

下一篇:使用spring cloud alibaba-网关(gateway)+安全认证(springsecurity+jwt)

您可能感兴趣

  • 用 Javascript 验证表单(form)中的单选(radio)值

    在用 Javascript 验证表单(form)中的单选框(radio)是否选中时,很多新手都会遇到问题,原因是 radio 和普通的文本框在获取值的时候有很大不同,本文介绍了一个较为通用的获取 radio 值的方法,希望对新手有用。 ----------------------------------------------------------...

  • js三目运算符

    三木元算符样式:     条件判断  ? A(是) : B(否)   并返回值     判断条件是否成立,若成立返回A,若不成立返回B 三目运算符极大的简化了if语句,同时又可以直接对判断的值进行返回,基本等同于在if else 的语句中,加入了return。 例子1: 若 var a = 1 == 1 ? 'A' : 'B'; 此时a为何值 很...

  • javascript运算符_使用JavaScript中的示例删除运算符

    javascript运算符 JavaScript删除运算符 (JavaScript delete Operator) "delete" is an operator in JavaScript and it is used to delete a property of an object. After deleting the part...

  • JavaScript + PHP 应用二:网页设计中树形菜单的动态实现

    树形菜单,熟悉Windows程序管理器的读者一定不会陌生。单击项目左侧的+号,项目展开;再次单击,项目收缩。读过很多篇有关树形菜单的JavaScript实现方法,原理很简单,都是利用Style中display属性的控制。笔者本文的重点并不侧重于此,倒是想谈一谈如何实现每一次从数据库中提取数据并动态更新树形菜单。  树形菜单主要用来导航。网站有很多栏目,每个栏目下有很多子栏目,栏目经常变动,如...

  • 在Javascript中为String对象添加trim,ltrim,rtrim方法

    利用Javascript中每个对象(Object)的prototype属性我们可以为Javascript中的内置对象添加我们自己的方法和属性。以下我们就用这个属性来为String对象添加三个方法:Trim,LTrim,RTrim(作用和VbScript中的同名函数一样)String.prototype.Trim = function(){    return this.replace(/(^...

  • js客户端数据库的对象与函数

    作者:小馄饨_奋斗   发表日期:2000年12月29日 有时候想在网页上使用客户端数据库,但为了兼容第版本的浏览器不支持xml技术,所以在此编了一些js的dml函数希望有兴趣的朋友一起讨论 function TRform() { this.TRRC=new Array(); this.QRC=new Array();//结果 this.currentRC=1;//当前纪录指针 this.l...

  • 系统级C语言程序设计

    摘要:本文主要介绍C语言中中断服务程序的编写、安装和使用。由于硬中断服务程序的编写涉及到硬件端口读写操作,使得用户直接和硬件打交道,在程序设计过程中要用到的数据(如硬件端口地址等)比较多,这就使程序员和计算机的硬件设备间缺少一种“缓冲”的作用,况且,用汇编语言来直接对硬件编程要方便得多。本文仅对软中断程序的编写作个介绍。关键词:软中断、中断向量、中断向量表、TSR内存驻留、DOS重入、中断请...

  • JavaScript窗口功能指南之引用已打开的窗口

    JavaScript窗口功能指南之引用已打开的窗口(作者:听风编译 2001年01月19日 11:35)  如果你想关联一个指定的窗口,你可以使用< A >标记的TARGET属性。除非你分配,一个浏览器窗口不会有一个名字。当你使用TARGET属性通过一个链接打开一个新窗口时,你就分配给它了一个清晰的名字:   Intel   前面的链接打开一个新窗口,名叫review。下面的链接通过Java...

CSDN

CSDN

中国开发者社区CSDN (Chinese Software Developer Network) 创立于1999年,致力为中国开发者提供知识传播、在线学习、职业发展等全生命周期服务。

华为云40多款云服务产品0元试用活动

免费套餐,马上领取!
js,javascript作用域, 全局局部作用域, 全局变量和局部变量, 块级作用域, 作用域链介绍:华为云为您免费提供js,javascript作用域, 全局局部作用域, 全局变量和局部变量, 块级作用域, 作用域链在博客、论坛、帮助中心等栏目的相关文章,同时还可以通过 站内搜索 查询更多js,javascript作用域, 全局局部作用域, 全局变量和局部变量, 块级作用域, 作用域链的相关内容。| 移动地址: js,javascript作用域, 全局局部作用域, 全局变量和局部变量, 块级作用域, 作用域链 | 写博客