JavaScript 变量的作用域和生命周期

代码有生命吗?答案是有。它也像我们一样,拥有自己的生命。变量有局部变量和全局变量,它们的生命长短不一样。不过它的生命都是从它被声明的时候开始的,不同的是局部变量
会在函数运行以后被删除,也就是死亡,而全局变量只有在页面关闭才会结束。它的生命周期明白了的话,我们就讲下变量的作用域,如下

for (var i = 0; i < 10; i++) {var oneVal = i;}console.log(oneVal);

我们在学C#的时候是不是不能在循环体里面声明变量,但是,在js里是可以的。
如图一样输出了结果
在这里插入图片描述
注意:在循环体里面声明的变量是全局变量,网页里的脚本和函数都可以访问到全局变量,不注意声明了重复的变量的话,很容易相互干扰。如下这样是不行的

for (var i = 0; i < 10; i++) {var oneVal = i;}for (var k = 0; k < 10; k++) {var oneVal = i;}console.log(oneVal);

你以为是输出的是9,但是结果是10,所以我们要注意细节,别粗心大意得不偿失了。
在函数内部声明的变量是局部变量,所以只能在函数内部访问它,在函数外面就不行了。
如图

function varName1(oneVar) {var twoVar = oneVar;console.log(oneVar);}varName1(2333);console.log(twoVar);

在这里插入图片描述

这样的话只有里面的变量输出了结果,而外面的显示了错误,所以要记住了函数内部声明的变量,外面是用不了的。不同的函数可以声明相同的局部变量,因为只有声明过该变量的函数才 能识别出该变量,当要函数运行完毕,局部变量就会被删除。
还有一点值得注意不要向未声明的变量分配值,如果你把值赋给尚未声明的变量,该变量将被自动作为window对象的一个属性,就有可能会覆盖它原来的属性。
如图

function varName1(oneVar) {var twoVar = oneVar;var alert=oneVar;alert("123");}varName1(2333);

在这里插入图片描述

看吧,它就会说alert不是一个方法,所以我们尽量不要这样做。
好了,以上内容来自老师上课的讲解和我个人的理解,希望能对你有帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/330605.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL笔记 - 用户管理

转自&#xff1a; https://segmentfault.com/a/1190000014856560MySQL笔记 - 用户管理 tags: 数据库 MySQL 用户管理学习目标 MySQL是一个多用户数据库&#xff0c;具有功能强大的访问控制系统&#xff0c;可以为不同用户指定允许的权限。 MySQL用户可以分为普通用户和root用户…

关于区块链技术的10本书

转载自 2018年必看&#xff1a;关于区块链技术的10本书 1、区块链技术指南 区块链专家联袂推荐&#xff0c;资深区块链践行者联合撰写&#xff0c;从技术层面全面揭示区块链技术秘密。涵盖基础概念、架构、底层算法、应用开发、典型的区块链解决方案、常见问题等读者*为关心的技…

如何用css3实现简单旋转的风车

如何用css3实现简单旋转的风车 在DW中想要实现旋转的风车就要使用关键帧keyframes来设置旋转&#xff0c;其实也没什么难度的。先设置它的样式&#xff0c;然后要用定位把它放到合适的位置就可以了。 HTML的代码如下&#xff1a; <div class"fengche"><div…

使用While循环语句值得注意的事

我们在日常生活的编程中经常会用到while循环&#xff0c;while循环的有一个要注意的地方&#xff0c;如果不注意就会造成死循环。如图&#xff1a; 就像我写的那样&#xff0c;i不能忘写&#xff0c;忘写了就会导致死循环。 死循环可是很可怕的&#xff0c;会让浏览器消耗大量…

如何用JS实现音乐播放、暂停

刚开始学习的时候&#xff0c;我不懂怎么在HTML中播放音乐&#xff0c;后来才发现其实很简单的&#xff0c;只要一句代码配合js使用就OK了。好了请看下面的代码 源代码&#xff1a; <!doctype html> <html> <head> <meta charset"utf-8"> &…

神奇,教你用随机数打印hello world

转载自 神奇&#xff0c;教你用随机数打印hello world 下面是一段随机数程序。 public static void main(String[] args) {System.out.println(randomString(-229985452) " " randomString(-147909649)); }public static String randomString(int seed) {Random r…

离线配置xml的文档类型定义文件(xml语法规则) dtd

step1&#xff09;将jar文件解压&#xff0c;并找到对应的 dtd文件&#xff1b;step2&#xff09;不带引号复制 dtd uri&#xff1a; http://mybatis.org/dtd/mybatis-3-config.dtdstep3&#xff09;window -> preference -> xml -> xml catalog -> add ->

轮播有可能出现的问题

我们在日常生活中常常会看到各种各样的轮播&#xff0c;轮播运用的范围很广&#xff0c;所以我们要学会轮播。 而刚开始学轮播的时候大家都有可能碰到一个问题&#xff0c;那就是图片切换的不完整。比如我们点击按钮让第一张图片切换到第二张&#xff0c;但是第一张可能没切换完…

Intellij Idea乱码解决方案都在这里了

转载自 Intellij Idea乱码解决方案都在这里了 乱码场景 使用Intellij Idea经常遇到乱码问题&#xff0c;可以总结为以下几类乱码的场景。 1、工程代码乱码。 2、main方法运行&#xff0c;控制台乱码。 3、tomcat运行&#xff0c;控制台乱码。 解决方案 1、工程代码乱码Settings…

官网下载mysql实例数据库

https://dev.mysql.com/doc/index-other.htmlalso, you can visit https://github.com/datacharmer/test_db for employee data.

怎么实现阴影效果呢?

我们在前端的设计中常常会用到图片和文字&#xff0c;如果只是单调的图片或文字&#xff0c;不怎么好看。所以我们要给它别的效果&#xff0c;比如&#xff1a;阴影效果。要实现阴影效果&#xff0c;我们就要用到box-shadow属性&#xff0c;它是一个复合属性&#xff0c;用于整…

Java管理Cookie增删改查操作

转载自 Java管理Cookie增删改查操作 Cookie属性 了解这几个属性之后&#xff0c;就知道如何进行Cookie的操作了。 name Cookie的名称。 value Cookie的值。 maxAge Cookie的失效时间&#xff0c;有以下几种值&#xff0c;默认为-1 值说明负数浏览器关闭后cookie就失效0马上清除…

伪类的用法

在前端的设计中我们常常会用到伪类&#xff0c;伪类到底是什么呢&#xff1f;css伪类是用来添加一些选择器的特殊效果。如图&#xff1a; 其中&#xff0c;最常用的是&#xff1a;hover把鼠标放在类的上面所表现的状态&#xff0c;下面我给大家看一下。 代码&#xff1a; <…

mysql体系结构和存储引擎

转自&#xff1a; mysql技术内幕&#xff1a;innodb存储引擎&#xff08;非常棒的一本书&#xff09; 【1】mysql体系结构和存储引擎 【1.2】mysql体系结构 1&#xff09;mysql数据库实例在系统上的表现就是一个进程&#xff1b; 2&#xff09;数据库与数据库实例的区别&…

SpringCloud配置中心内容加密

转载自 SpringCloud配置中心内容加密 从配置获取的配置默认是明文的&#xff0c;有些像数据源这样的配置需要加密的话&#xff0c;需要对配置中心进行加密处理。 下面使用对称性加密来加密配置&#xff0c;需要配置一个密钥&#xff0c;当然也可以使用RSA非对称性加密&#xff…

浮动的用法

在我们html的布局中常常会用到float&#xff08;浮动&#xff09;在页面布局时&#xff0c;一般用float属性来实现多栏布局&#xff0c;导航菜单等等&#xff0c;往往是用于图像和文字。元素的水平方向浮动意味着元素只能左右移动而不能上下移动。如果你把几个浮动的元素放到一…

高性能mysql_事务及4种隔离级别

转自 高性能mysql 【1.3】事务 1&#xff09;事务定义&#xff1a;事务就是一组原子性的sql查询&#xff0c;或者说一个独立的工作单元。 即事务内的sql语句&#xff0c;要么全部执行成功&#xff0c;要么全部执行失败&#xff1b; 2&#xff09;事务的ACID概念&#xff1a…

String、StringBuilder、StringBuffer三者执行效率

一、String、StringBuilder、StringBuffer的执行效率 StringBuilder > StringBuffer > String二、测试代码 package cn.test;public class Test {final static int COUNT 10000 * 1;public static void main(String[] args) {stringAdd(COUNT);stringConcat(COUNT);stri…

数据库死锁_死锁荔枝_解决方法

转自高性能mysql&#xff1b; 【1.3.2】死锁 1&#xff09;死锁定义&#xff1a;指两个或多个事务在同一资源上相互占用&#xff0c; 并请求锁定对方占用的资源&#xff0c;从而导致恶性循环的现象&#xff1b; 当多个事务试图以不同顺序锁定资源时&#xff0c;就可能产生死锁…

sql注入攻击和PreparedStatement有效防止sql注入攻击

【1】sql注入攻击&#xff1a; /*** SQL 注入.*/Testpublic void testSQLInjection() {String username "a OR PASSWORD ";String password " OR 11";String sql "SELECT * FROM user_tbl WHERE user_name " username " AND " …