使用var声明的变量 和 直接赋值并未声明的变量的区别

在看JS高级程序设计时忽然想到这个问题,众所周知,直接赋值一个变量而为声明,会产生一个全局变量(或者说是全局对象的属性),但用var声明的变量 和 直接赋值而并未声明的变量 都有哪些区别呢,这是我在百度知道上搜到的,个人感觉总结的很全:

1.在函数作用域内 加var定义的变量是局部变量,不加var定义的就成了全局变量。
使用var定义
var a = 'hello World';
function bb(){
var a = 'hello Bill';
console.log(a); 
}
bb() // 'hello Bill'
console.log(a); // 'hello world'

不使用var定义
var e = 'hello world';
function cc(){
e = 'hello Bill';
console.log(e); // 'hello Bill'
}
cc() // 'hello Bill'
console.log(e) // 'hello Bill'

2.在全局作用域下,使用var定义的变量不可以delete,没有var 定义的变量可以delete.也就说明隐含全局变量严格来说不是真正的变量,而是全局对象的属性,因为属性可以通过delete删除,而变量不可以。
3.使用var 定义变量还会提升变量声明,即(不理解的说明要多理解理解预编译了
使用var定义:
function hh(){
console.log(a);
var a = 'hello world';
}
hh() //undefined

不使用var定义:
function hh(){
console.log(a);
a = 'hello world';
}
hh() // 'a is not defined'

这就是使用var定义的变量的声明提前。
4.在ES5的'use strict'模式下,如果变量没有使用var定义,就会报错。 

转载于:https://www.cnblogs.com/Walker-lyl/p/5262698.html

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

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

相关文章

转载-程序员编程技术迅速提高的终极攻略

2019独角兽企业重金招聘Python工程师标准>>> 前言 你是否觉得自己从学校毕业的时候只做过小玩具一样的程序?走入职场后哪怕没有什么经验也可以把以下这些课外练习走一遍(朋友的抱怨:学校课程总是从理论出发,作业项目都…

工作记录二-Docker+Dockerfile

1. 安装虚拟机 Oracle VM VirtualBox, 安装centos 7.2版本2. 需要在命令行中先设置代理: export http_proxyproxy.xxxxx.com:8080 3. 运行 yum install docker安装docker 安装 docker-compose curl -L https://github.com/docker/compose/releases/down…

SVM

from:https://blog.csdn.net/liugan528/article/details/79448379 SVM 1. 基本概念 支持向量机(Support Vector Machine, SVM)的基本模型是在特征空间上找到最佳的分离超平面使得训练集上正负样本间隔最大。SVM是用来解决二分类问题的有监督学…

listView当中有嵌套了有onClickListener的控件时ListView自身的onItemClick无响应的解决方案...

参考:http://www.cnblogs.com/bluestorm/archive/2013/03/24/2979557.html 解决方案 在ListView要显示的Item的外层加上 android:descendantFocusability"blocksDescendants"转载于:https://www.cnblogs.com/jinglecode/p/5683724.html

LoadRunner常用术语

1.场景 2.负载发生器 3.虚拟用户 4.虚拟用户脚本 5.事务 6.思考时间 7.集合点 8.事务响应时间 转载于:https://www.cnblogs.com/Andy-Lv/p/5263707.html

跟我学Shiro目录贴

2019独角兽企业重金招聘Python工程师标准>>> http://jinnianshilongnian.iteye.com/blog/2018398 转载于:https://my.oschina.net/zhanggongming/blog/714844

【WinForm-无边框窗体】实现Panel移动窗体,没有边框的窗体

没有边框的窗体怎么移动?其实方法有很多,下面介绍一种用控件来移动窗体,Panel或PictureBox都可。主要设置控件的MouseDowm和MouseLeave事件。 第一步:窗体设计 窗体最上面是一个panel1 窗体最下面是一个Panel3,只显示最…

\Grokking Algorithms\简介与作者采访

\关键点\这本书目的是告诉读者解决问题的新方法。 \这本书试图通过插图来让大家更容易掌握主题,避免部分读者觉得太费解。 \这本书不仅适合没有接触过算法的人,也适合刚从计算机专业毕业的学生。 \这本书提供了非常多的例子和简单练习。 \这并不是一本参…

ZedGraph使用经验

开源的统计图控件中基本常用的是OpenFlashChar和ZedGraph,今天就先来讲讲ZedGraph的使用。 ZedGraph资源 ZedGraph来源:http://sourceforge.net/project/showfiles.php?group_id114675ZedGraph相关例子资源:http://zedgraph.org/wiki/index.…

[转载]聊一聊人员培养

转载自“搜狗测试”微信。 人员培养的痛点 大家在组内人员培养是否遇到了如下问题: 组员成长缓慢,无法达到预期 有时候感觉组员没啥进步,有时候感觉组员挺好的,无法统一评价 脑子里都是组员的问题,无法集中精力做其他…

QCon2016旧金山大会焦点分享者确认

QCon旧金山大会是由InfoQ举办的连续十年的最大的英语会议,它将在今年11月7-9日在旧金山湾区举行。\\在QCon大会涵盖了一系列深入的技术,架构师、资深开发者所关注的国际事件,聚焦创新领域和软件发展趋势,QCon大会每年在美国、中国…

怎样安装两个tomcat,怎样配置

装两个tomcat 各自是6.0和7.0 可想执行tomcat6.0 可是实际上却执行tomcat7.0 两个版本号都是用解压缩包 事实上就是不能执行tomcat6.0 仅仅能执行7.0 两个环境变量都配置了。port也改了 还是不行 我遇到这样的情况了,不知大家遇到没有,例如以下是我的…

机器学习实战之SVM

一引言:支持向量机这部分确实很多,想要真正的去理解它,不仅仅知道理论,还要进行相关的代码编写和测试,二者想和结合,才能更好的帮助我们理解SVM这一非常优秀的分类算法支持向量机是一种二类分类算法&#x…

模拟分页效果

css部分&#xff1a; <style type"text/css">.main{width:800px;zoom:1;margin:0 auto;}.item{width:800px;overflow:hidden;}ul{padding:0;width:860px;zoom:1;}.clear{zoom:1;}.clear:after{content:"";display:block;height:0;clear:both;visibil…

XML基本概念及增删改查操作

一、概念及特征&#xff1a; 1. XML 指可扩展标记语言(Extensible Markup Language)&#xff0c;用户可以自己定义标签。XML 被设计用来传输和存储数据&#xff0c;而 HTML 用于格式化并显示数据&#xff0c;并且HTML不能自定义标签。 2. XML 文档形成一种树结构&#xff0c; X…

mysql 时间类型 datetime,timestamp

2019独角兽企业重金招聘Python工程师标准>>> CURRENT_TIMESTAMP 的 timestamp 意思是 根据 mysql 的当前时间&#xff0c;使用mysql 的当前时间。 参考地址&#xff1a;http://blog.sina.com.cn/s/blog_67cc6e7d0100nrwk.html datetime 和 timestamp 都是保存时间格…

生成jsp验证码的代码详解(servlet版)

package util; import java.util.*; import java.io.*; import java.awt.*; import java.awt.image.*; import javax.servlet.*; import javax.servlet.http.*; import com.sun.image.codec.jpeg.*; /** 生成验证码图片*/ public class ValidateCode exten…

机器学习中的交叉验证(cross-validation)

from:https://blog.csdn.net/lhx878619717/article/details/49079785 交叉验证&#xff08;Cross validation)&#xff0c;交叉验证用于防止模型过于复杂而引起的过拟合. 有时亦称循环估计&#xff0c; 是一种统计学上将数据样本切割成较小子集的实用方法。于是可以先在一个子…

linux禁止ping

执行此命令 &#xff1a;echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all 可以禁止ping一、如果没有iptables禁止pingecho 1 > /proc/sys/net/ipv4/icmp_echo_igore_all #开启echo 0 > /proc/sys/net/ipv4/icmp_echo_igore_all #关闭二、利用iptables规则禁pingi…

python3字符串属性(二)

1、S.isdecimal() -> bool Return True if there are only decimal characters in S, False otherwise. 字符串如果是十进制&#xff0c;返回True。 2、S.isdigit() -> bool Return True if all characters in S are digits and there is at least one character …