积累下素材,明天要讲:javascript的变量和作用域

咱们的零基础前端课程,明天就要讲到js的作用域了,今晚先提前写一写,积累下素材。

说到作用域其实就是“非全局变量”能够工作的范围了,你定义这个变量时的区域有多大,它的工作范围就有多大。如果某个变量你没定义,而是拿过来直接用,那就会变成“心有多大,世界就有多大”。

////////

私有和全局作用域:

var aa = 'xxx';
function testfn(){
 var aa = 'sss';
 console.log(aa);//sss
}
testfn();
console.log(aa);//xxx

很简单的例子,用var声明了全局的aa和函数内的aa,但打印出来的值却不同。因为函数内部的是局部变量,在函数内部声明的变量要比外部的同名的变量优先级高,所以函数内部的变量就覆盖了同名的外部的。

所以打印结果就那样了。

////////

不用var声明变量,直接拿用。

aaa = 'aa123';
function testAAA(){
    aaa = 'xxx'; 
    console.log(aaa); // xxx
    bbb = 'xxx';
    console.log(bbb); // xxx
}
testAAA();
console.log(aaa); // xxx
console.log(bbb); // xxx

这个例子里,到最后aaa和bbb的值,都是xxx。为啥?因为变量没有使用var声明,导致所有的变量都是全局变量。在执行testAAA函数的时候,aaa的值就变了。

同时也因为函数体内的bbb变量没有使用var声明,导致它事实上是一个全局变量,所以在函数体外也可以访问它。这就是,“心有多大,世界就有多大”。

////////

说的深一点,其实书上写的很清楚,用var来声明一个变量。如果不用var声明而搞出来的所谓“全局变量”,其实只能算是给“对象添加了一个属性”。当然这个对象得是全局的才行。

原文发布于微信公众号 - web前端教室(webfeel)

原文发表时间:2017-05-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java技术栈

跟我学 Java 8 新特性之 Stream 流基础体验

Java8新增的功能中,要数lambda表达式和流API最为重要了.这篇文章主要介绍流API的基础,也是流API系列的第一篇文章,话不多说,直奔主题.

13330
来自专栏tkokof 的技术,小趣及杂念

再谈谈列表元素的删除

之前(以及更早之前)都提到了列表元素的删除,也提到过几种方法,有兴趣的朋友可以去看看,其中一种个人比较倾向的写法大概是这个样子(C++):

8510
来自专栏游戏开发那些事

【Unity游戏开发】浅谈Lua和C#中的闭包

  目前在Unity游戏开发中,比较流行的两种语言就是Lua和C#。通常的做法是:C#做些核心的功能和接口供Lua调用,Lua主要做些UI模块和一些业务逻辑。这...

25620
来自专栏WindCoder

Java设计模式学习笔记—原型模式

文章最后“Java设计模式笔记示例代码整合”为本系列代码整合,所有代码均为个人手打并运行测试,不定期更新。本节内容位于其Prototype包(package)中...

8420
来自专栏每日一篇技术文章

Java_面向对象_04

面向对象是Java的核心,面向对象的核心是用人类解决问题的方法对复杂的客观问题进行分析,组织和解答,对于程序员而言,难点在于尽可能正确描述问题的抽象。面向对象的...

9330
来自专栏小樱的经验随笔

COGS 1299. bplusa【听说比a+b还要水的大水题???】

1299. bplusa ☆   输入文件:bplusa.in   输出文件:bplusa.out 评测插件 时间限制:1 s   内存限制:128 MB ...

28380
来自专栏北京马哥教育

百度大牛总结十条 Python 面试题检验你的真实水平

学Python最简单的方法是什么?推荐阅读:Python开发工程师成长魔法 概述 Python 是个非常受欢迎的编程语言,随着近些年机器学习、云计算等技术的发...

28860
来自专栏用户画像

外部排序的方法

在实际应用中,由于外存设备的不同,通常又可分配磁盘文件排序和磁带文件排序两大类。磁带排序和磁盘排序的基本步骤相类似,主要的不同之处在于初始归并段在外存介质中的分...

14110
来自专栏C/C++基础

C++中引用的本质

引用是C++引入的重要机制,它使原来在C中必须用指针实现的功能有了另一种实现的选择,在书写形式上更为简洁。那么引用的本质是什么,它与指针又有什么关系呢?

6610
来自专栏cloudskyme

设计模式(8)-状态模式(关注状态之间的变化)

状态模式(State Pattern)是设计模式的一种,属于行为模式。 定义(源于Design Pattern):当一个对象的内在状态改变时允许改变其行为,这...

37770

扫码关注云+社区

领取腾讯云代金券