js变量提升_JS中不用var声明变量与变量提升

前言:

工作这么久了,还从来没写过博客,发现很多东西都遇到过,但是没去总结,没过多久就给忘记了。也是想借博客能让更多的人少踩坑,自己也能加深印象。下面是自己前段时间出的一份前端面试题附带解析(新手上路,多多关照。不周之处,多多包含)

见js代码:

<

输出结果:

a880db78f8cd767c74e6b6795bffbb20.png
全部输出结果

1b49e54c1059d034659c65ec69bf1e64.png
调用test1()方法输出结果

解析:

调用test1()方法输出test1,ECMAScript一个有趣的方面(也是大多数程序设计语言的主要区分),在使用变量之前可不用声明;ECMAScript的解释程序遇到未声明过的标识符时,用该变量创建一个全局变量,并将其初始化为指定的值。故test1()方法中的无var声明变量name为全局变量,调用结果为test1;不过如果不能紧密跟踪变量,这样做也是很危险。最好的习惯时享使用其他程序设计语言一样,总是声明所有变量。


1167ef3cae0ad2566c827bf048d91531.png
调用test2()方法输出结果

解析:

调用test1()方法时,声明了一个全局变量name,故test2()方法第一处输出的name为test1()方法声明的全局变量name输出为test1,第二处因已给这个全局变量重赋值故输出test2;


3b4af362797f3d18e3f684e3cf8c1d5a.png
调用test3方法输出结果

解析:

调用test3()方法时,注意有修饰符this,js中的this是谁调用指向谁,当前test3()方法作为方法被调用,相当于window.test3()。那么test3()方法中的第一处输出this.name指向的则是window对象中的全局属性name,输出为test2;第二处因出于js中的变量提示,每次会在当前作用域的最顶部进行声明并没有赋值,输出undefined(参考下处例子);

例:

       function test() {
	    console.log(name); //undefined
            var name = "test"
	}

实际上以上代码,是按以下顺序来执行的:

       function test() {
            var name;//js声明变量,会在当前作用域的最顶部声明该属性,但并没有赋值。其默认值为undefined
	    console.log(name); //输出默认值undefined
            name = "test";//此时进行赋值
            console.log(name); //输出test
	}
天梯(tianti) Java 轻量级的 CMS 解决方案-天梯。天梯是一个用 Java 相关技术搭建的后台 CMS 解决方案,用户可以结合自身业务进行相应扩展,同时提供了针对 dao、service 等的代码生成工具。技术选型:Spring Data JPA、Hibernate、Shiro、 Spring MVC、Layer、MySQL 等。 简介: 1、天梯是一款使用Java编写的免费的轻量级CMS系统,目前提供了从后台管理到前端展现的整体解决方案。 2、用户可以不编写一句代码,就制作出一个默认风格的CMS站点。 3、前端页面自适应,支持PC和H5端,采用前后端分离的机制实现。后端支持天梯蓝和天梯红换肤功能。 4、项目技术分层明显,用户可以根据自己的业务模块进行相应地扩展,很方便二次开发。 核心框架:Spring Framework 4.2.5.RELEASE 安全框架:Apache Shiro 1.3.2 视图框架:Spring MVC 4.2.5.RELEASE 数据库连接池:Tomcat JDBC 缓存框架:Ehcache ORM框架:Spring Data JPA、hibernate 4.3.5.Final 日志管理:SLF4J 1.7.21、Log4j 编辑器:ueditor 工具类:Apache Commons、Jackson 2.8.5、POI 3.15 view层:JSP 数据库:mysql、oracle等关系型数据库 前端 dom : Jquery 分页 : jquery.pagination UI管理 : common UI集成 : uiExtend 滚动条 : jquery.nicescroll.min.js 图表 : highcharts 3D图表 :highcharts-more 轮播图 : jquery-swipe 表单提交 :jquery.form 文件上传 :jquery.uploadify 表单验证 :jquery.validator 展现树 :jquery.ztree html模版引擎 :template
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值