块级作用域

-      在其他的语言中,任何一对花括号中的语句都属于一个块,在这之中定义的所有变量在代码块外是不可见的

-      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-变量的作用域面试题的更多相关文章

  1. javascript变量的作用域

    javascript变量的作用域 基本类型和引用类型 基本类型值指的是简单的数据段,而引用类型值指的是那个可能由多个值组成的对象  讲一个值赋值给变量时,javascript解析器首先要确定是基本类型 ...

  2. javascript 函数初探 (三)--- javascript 变量的作用域

    javascript 变量的作用域: 这是一个至关重要的问题.特别是当我们从别的语言转向javascript时,必须要明白一点,即在javascript中,变量的定义并不是以代码块作为作用域的,而是以 ...

  3. 深入理解 JavaScript 变量的作用域和作用域链

    一个变量的作用域(scope)是程序源代码中定义这个变量的区域.简单的说,作用域就是变量与函数的可访问范围.全局变量拥有全局作用域,在JavaScript代码中的任何地方都有定义.局部变量是在函数体内 ...

  4. JavaScript变量和作用域

    认识JavaScript中的变量 JavaScript中的变量有两种类型,一种是基本类型.一种是引用类型. 基本数据类型:Defined,Null,Boolean,Number,String.注意St ...

  5. JavaScript变量的作用域和函数的作用域的区别

    变量作用域和函数作用域都涉及到变量值的变化,本文旨在让大家明白他们之间的区别 变量的作用域: 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接 ...

  6. JavaScript - 变量,作用域,内存

    JavaScript 变量可以用来保存两种类型的值:基本类型值和应用类型值.基本类型的值源自以下5种基本数据类型:Undefined.Null.Bollean.Number和String. 所有变量都 ...

  7. 深入浅出 JavaScript 变量、作用域和内存 v 0.5

    本文主要从原理入手分享变量和作用域的相关知识,最后结合本文所分享知识,再次深入了解下闭包的运行原理. 主要参考<JS高级程序设计> <JS权威指南> <高性能 JS> ...

  8. 【javascript 变量和作用域】

    今天学习了javascript 的变量和作用域的基本知识,对于以前在开发中遇到的一些不懂的小问题也有了系统的认识,收获还是比较多的. [基本类型和引用类型] ECMAScript 变量可能包含两种不同 ...

  9. [从jQuery看JavaScript]-变量与作用域链

    jQuery片段: var // Will speed up references to window, and allows munging its name. window = this, //  ...

  10. [label][JavaScript][The Defined Guide of JavaScript] 变量的作用域

    变量的作用域 一个变量的作用域(scope)是程序中定义这个变量的区域. 全局(global)变量的作用域(scope)是全局性的,即在JavaScript代码中,它处处都有定义.    而在函数之内 ...

随机推荐

  1. Oracle 11g 的安装及配置详解

    一.安装前的准备: 首先在这里给出本人的百度网盘的链接:http://pan.baidu.com/s/1c1WF1PQ:网速快的小伙伴建议到官网:http://www.oracle.com/techn ...

  2. 【求Java工程师/专家】大型互联网公司急招

    互联网行业排名Top公司,目前项目扩张阶段,需求数量较多的JAVA中高端后台开发人员,需要有分布式系统开发经验,年后有找工作的同学可以联系我了. 工作地点:杭州 岗位要求: 1.精通Java SE和J ...

  3. 学习Cocos2d的博客 --推荐

    http://xiaominghimi.blog.51cto.com/2614927/d-6/p-1

  4. 为什么亚马逊云计算中的DNS服务叫Route53?

    最近在用亚马逊的云计算服务,看到它的DNS服务的名字叫做"Route 53".这个名字让我很好奇,为什么叫"Route 53"呢?有什么特殊含义? 看到了这个Q ...

  5. hadoop2.5.2安装部署

    0x00 说明 此处已经省略基本配置步骤参考Hadoop1.0.3环境搭建流程,省略主要步骤有: 建立一般用户 关闭防火墙和SELinux 网络配置 0x01 配置master免密钥登录slave 生 ...

  6. 关于boostrap的thead固定tbody滚动

    原文地址:http://blog.csdn.net/bbsyi/article/details/51126041# 1 <!DOCTYPE html> 2 <html> 3 & ...

  7. 支持向量机(SVM)理论总结系列.线性可分(附带R程序案例:用体重和心脏重量来预测一只猫的性别)

    附注:不要问我为什么写这么快,是16年写的. 1.名词解释 支持向量机中的机:在机器学习领域,常把一些算法看做一个机器,如分类机(也叫作分类器) 2.问题描述 空间中有很多已知类别的点,现在想用一个面 ...

  8. ftp服务搭建

    文件传输服务 主配置文件目录/etc/vsftpd/vsftpd.conf 首先安装ftp服务器 yum install vsftpd 默认存放文件的目录  /var/ftp/pub 匿名登陆 创建一 ...

  9. 每天一个linux命令(39)--ifconfig命令

    许多人非常熟悉Windows下的ipconfig 命令行工具,它被用来获取网络接口配置信息并对此进行修改.Linux系统拥有一个类似的工具,也就是ifconfig(interfaces  config ...

  10. QTP11完美破解小笔记

    相比Loadrunner的破解,QTP的应该会更简单,但是效果并没有Loadrunner的长久.QTP的破解只能维持30天,每30天需要再进行如下操作: 1.到C:\ProgramData目录下面去删 ...