JavaScript-变量的作用域面试题
块级作用域
- 在其他的语言中,任何一对花括号中的语句都属于一个块,在这之中定义的所有变量在代码块外是不可见的
- JavaScript中没有块级作用域
//这里只有函数中定义的变量,才不能被外部访问
//这里的i和a变量,是可以在外面被访问的。
for(var i = 0;i<0;i++){
var a = 10; }
全局变量
- 定义在script或者不属于某个函数的变量
- 全局变量,可以在同一个文件中的两个Script代码使用
<script type="text/javascript">
var a=10;
</script>
<!--其他代码-->
<scripr type="text/javascript">
console.log(a);
//这里仍然可以输出a的值
<script>
局部变量
- 定义在函数内部的变量
其他
- 函数内部可以访问到该函数所属的外部作用域的变量(作用域链)
- 不使用var声明的变量是全局变量,不推荐使用。
注意:不使用var声明的变量,必须进行赋值,否则会提示变量不存在
function(){
a=1;
console.log(a);
}
//这里是违法的,因为a没赋值
function(){
console.log(a);
}
- 变量退出作用域之后会销毁,全局变量关闭网页或浏览器才会销毁
JavaScript中预编译的问题
JavaScript在接收到script代码的时候,会先进行预处理,改变代码的顺序
- 把代码的声明提前
- 把函数的定义提前
例如下面的代码
var num = 10;
fun();
function fun(){
condole.log(“兔子只吃胡萝卜”);
}
//JavaScript预处理后
var num;
function fun(){
condole.log(“兔子只吃胡萝卜”);
}
num = 10;
fun();
由此产生的面试题
1.输出的值是什么
var num = 10;
fun();
function fun (){
console.log(num);
var num = 20;
}
//首先将其预编译
var num;
num = 10;
function fun (){
var num;
console.log(num);
num = 20;
}
fun();
//此时输出为undefined
2. 输出是什么
var a = 18;
f1();
function f1(){
var b=9;
console.log(a);
console.log(b);
var a = ‘123’;
}
//预编译
var a;
a = 18;
function f1(){
var b;
var a;
b=9;
console.log(a);
console.log(b);
a = ‘123’;
}
f1();
//输出结果
undefined
9
3. 输出什么
//这里会牵扯到全部变量的定义,在函数中,如果没有用var定义的变量,是全局变量
f1();
console.log(c);
console.log(b);
console.log(a);
function f1(){
var a = b = c = 9;
console.log(a);
console.log(b);
console.log(c);
}
//预编译结果
var b;
var c;
function f1(){
var a;
a = b = c = 9;
console.log(a);
console.log(b);
console.log(c);
}
f1();
console.log(c);
console.log(b);
console.log(a);
//输出结果
9
9
9
9
9
Uncaught ReferenceError: a is not defined//变量未定义
JavaScript-变量的作用域面试题的更多相关文章
- javascript变量的作用域
javascript变量的作用域 基本类型和引用类型 基本类型值指的是简单的数据段,而引用类型值指的是那个可能由多个值组成的对象 讲一个值赋值给变量时,javascript解析器首先要确定是基本类型 ...
- javascript 函数初探 (三)--- javascript 变量的作用域
javascript 变量的作用域: 这是一个至关重要的问题.特别是当我们从别的语言转向javascript时,必须要明白一点,即在javascript中,变量的定义并不是以代码块作为作用域的,而是以 ...
- 深入理解 JavaScript 变量的作用域和作用域链
一个变量的作用域(scope)是程序源代码中定义这个变量的区域.简单的说,作用域就是变量与函数的可访问范围.全局变量拥有全局作用域,在JavaScript代码中的任何地方都有定义.局部变量是在函数体内 ...
- JavaScript变量和作用域
认识JavaScript中的变量 JavaScript中的变量有两种类型,一种是基本类型.一种是引用类型. 基本数据类型:Defined,Null,Boolean,Number,String.注意St ...
- JavaScript变量的作用域和函数的作用域的区别
变量作用域和函数作用域都涉及到变量值的变化,本文旨在让大家明白他们之间的区别 变量的作用域: 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接 ...
- JavaScript - 变量,作用域,内存
JavaScript 变量可以用来保存两种类型的值:基本类型值和应用类型值.基本类型的值源自以下5种基本数据类型:Undefined.Null.Bollean.Number和String. 所有变量都 ...
- 深入浅出 JavaScript 变量、作用域和内存 v 0.5
本文主要从原理入手分享变量和作用域的相关知识,最后结合本文所分享知识,再次深入了解下闭包的运行原理. 主要参考<JS高级程序设计> <JS权威指南> <高性能 JS> ...
- 【javascript 变量和作用域】
今天学习了javascript 的变量和作用域的基本知识,对于以前在开发中遇到的一些不懂的小问题也有了系统的认识,收获还是比较多的. [基本类型和引用类型] ECMAScript 变量可能包含两种不同 ...
- [从jQuery看JavaScript]-变量与作用域链
jQuery片段: var // Will speed up references to window, and allows munging its name. window = this, // ...
- [label][JavaScript][The Defined Guide of JavaScript] 变量的作用域
变量的作用域 一个变量的作用域(scope)是程序中定义这个变量的区域. 全局(global)变量的作用域(scope)是全局性的,即在JavaScript代码中,它处处都有定义. 而在函数之内 ...
随机推荐
- Oracle 11g 的安装及配置详解
一.安装前的准备: 首先在这里给出本人的百度网盘的链接:http://pan.baidu.com/s/1c1WF1PQ:网速快的小伙伴建议到官网:http://www.oracle.com/techn ...
- 【求Java工程师/专家】大型互联网公司急招
互联网行业排名Top公司,目前项目扩张阶段,需求数量较多的JAVA中高端后台开发人员,需要有分布式系统开发经验,年后有找工作的同学可以联系我了. 工作地点:杭州 岗位要求: 1.精通Java SE和J ...
- 学习Cocos2d的博客 --推荐
http://xiaominghimi.blog.51cto.com/2614927/d-6/p-1
- 为什么亚马逊云计算中的DNS服务叫Route53?
最近在用亚马逊的云计算服务,看到它的DNS服务的名字叫做"Route 53".这个名字让我很好奇,为什么叫"Route 53"呢?有什么特殊含义? 看到了这个Q ...
- hadoop2.5.2安装部署
0x00 说明 此处已经省略基本配置步骤参考Hadoop1.0.3环境搭建流程,省略主要步骤有: 建立一般用户 关闭防火墙和SELinux 网络配置 0x01 配置master免密钥登录slave 生 ...
- 关于boostrap的thead固定tbody滚动
原文地址:http://blog.csdn.net/bbsyi/article/details/51126041# 1 <!DOCTYPE html> 2 <html> 3 & ...
- 支持向量机(SVM)理论总结系列.线性可分(附带R程序案例:用体重和心脏重量来预测一只猫的性别)
附注:不要问我为什么写这么快,是16年写的. 1.名词解释 支持向量机中的机:在机器学习领域,常把一些算法看做一个机器,如分类机(也叫作分类器) 2.问题描述 空间中有很多已知类别的点,现在想用一个面 ...
- ftp服务搭建
文件传输服务 主配置文件目录/etc/vsftpd/vsftpd.conf 首先安装ftp服务器 yum install vsftpd 默认存放文件的目录 /var/ftp/pub 匿名登陆 创建一 ...
- 每天一个linux命令(39)--ifconfig命令
许多人非常熟悉Windows下的ipconfig 命令行工具,它被用来获取网络接口配置信息并对此进行修改.Linux系统拥有一个类似的工具,也就是ifconfig(interfaces config ...
- QTP11完美破解小笔记
相比Loadrunner的破解,QTP的应该会更简单,但是效果并没有Loadrunner的长久.QTP的破解只能维持30天,每30天需要再进行如下操作: 1.到C:\ProgramData目录下面去删 ...