笔试题中经常有运行结果题,而大多体型都是围绕作用域展开,下面总结了几种相关的题:

  1. 外层的变量函数内部可以找到,函数内部的变量(局部变量)外层找不到。

    function aaa() {
    var a = 10;
    }
    alert(a);//Error a is not defined 由于a是函数内部定义的局部变量,根据作用域关系,外层(全局环境)访问不到局部变量。因此会报错
    var a=10;
    function aaa(){
    alert(a);
    } function bbb(){
    var a=20;
    aaa();
    }
    bbb();//10 由于aaa()执行时aaa的作用域链中a=10;
  2. 当var不加时,会自动生成全局变量(不建议这样写,一般定义变量时建议使用var关键字)
function aaa() {
var a = b = 10;//b未用var定义相当于全局变量,所以在函数外能够被访问到
}
aaa();
//alert(a);//会报错,a is not defined
alert(b);//10 相当于全局变量可以访问 //此时上面代码相当于以下代码
var b;
function aaa() {
b = 10;
var a = b;
}
aaa();
alert(a);//Error
alert(b);//10

3.变量的查找是就近原则,找就近var定义的,就近找不到的话则在外层寻找。

var a=10;
function aaa(){
alert(a);
var a=20;
}
aaa();//undefined 就近原则找到var定义的,预解析过程

4.当参数和局部变量重名时,优先级等同。

var a=10;
function aaa(a){
alert(a);
var a=20;
}
aaa(a);//10 由于参数和局部变量优先级等同,所以查找时找到局部变量10然后再是var定义的局部变量
var a=10;
function aaa(a){
var a=20;
alert(a); }
aaa(a);//20 局部变量将参数覆盖了,因此a值为局部变量的值
var a=10;
function aaa(a){
a+=3;//基本类型 /参数相当于局部变量,只是局部修改了a的值,而在全局访问时依然是全局的值
}
aaa(a);
alert(a);//10
var a=[1,2,3];
var b=[1,2,3];
function aaa(a,b){
a.push(4);
     b=[1,2,3,4];
}
aaa(a,b);
alert(a);//[1,2,3,4] 引用类型是引用的地址,所以局部修改会影响全局的值
alert(b);//[1,2,3]

js作用域之常见笔试题,运行结果题的更多相关文章

  1. 【笔试必备】常见sql笔试题(30题)

    sql是测试从业者必备的技能之一,基本上也是笔试必考内容. 所以,不要让sql拖了后腿,有些测友一遇到多表关联查询就犯晕,甚至连单表的执行顺序都没搞懂,下面简单介绍下,顺便给一些题供大家练习. 单表执 ...

  2. [原创]Java常见笔试题知识点汇总

    前天数梦工厂来学校招聘,笔试题比较有特点,全是Java题,基本就是Java的一些特点.凭记忆按照题目找到一些必备知识点 (1). try {}里有一个return语句,那么紧跟在这个try后的fina ...

  3. C/C++笔试题(基础题)

    为了便于温故而知新,特于此整理 C/C++ 方面相关面试题.分享,共勉. (备注:各题的重要程度与先后顺序无关.不断更新中......欢迎补充) (1)分析下面程序的输出(* 与 -- 运算符优先级问 ...

  4. 阿里巴巴集团2016校园招聘-Python工程师笔试题(附加题+部分答案)

    前言 第一次网上笔试,被虐的很惨.一是不太习惯,最主要的是还是自己对Python的掌握,还不够熟练.下面是这次阿里笔试相关信息 笔试时间是,2015年8月23日,10:00——12:00 对于笔试题, ...

  5. 华为2018软件岗笔试题之第一题python求解分享

    闲来无事,突然看到博客园首页上有人写了篇了华为2018软件岗笔试题解题思路和源代码分享.看了下题目,感觉第一题能做出来,就想着用刚刚学的python试着写一下,花费的时间有点长~~,看来又好长时间没练 ...

  6. 2018春招-今日头条笔试题-第四题(python)

    题目描述:2018春招-今日头条笔试题5题(后附大佬答案-c++版) #-*- coding:utf-8 -*- class Magic: ''' a:用于存储数组a b:用于存储数组b num:用于 ...

  7. 2018春招-今日头条笔试题-第三题(python)

    题目描述:2018春招-今日头条笔试题5题(后附大佬答案-c++版) 解题思路: 本题的做法最重要的应该是如何拼出‘1234567890’,对于输入表达试获得对应的结果利用python内置函数eval ...

  8. 从零开始的全栈工程师——js篇(作用域 this 原型笔试题练习)

    作用域 // 1. fn() function fn () { console.log(12) } var as = function () { console.log(45) } // 2. var ...

  9. Java基础常见笔试题总结

    1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行的字节码文件 2.“sta ...

随机推荐

  1. [LeetCode] Find K Pairs with Smallest Sums 找和最小的K对数字

    You are given two integer arrays nums1 and nums2 sorted in ascending order and an integer k. Define ...

  2. [LeetCode] Department Top Three Salaries 系里前三高薪水

    The Employee table holds all employees. Every employee has an Id, and there is also a column for the ...

  3. tensorflow学习笔记二:入门基础

    TensorFlow用张量这种数据结构来表示所有的数据.用一阶张量来表示向量,如:v = [1.2, 2.3, 3.5] ,如二阶张量表示矩阵,如:m = [[1, 2, 3], [4, 5, 6], ...

  4. Android开发之扫描二维码开发

    原贴地址:http://www.cnblogs.com/Fndroid/p/5540688.html 二维码其实有很多种,但是我们常见的微信使用的是一种叫做QRCode的二维码,像下面这样的,可以放心 ...

  5. 微信Api分享

    这些都是以前积累的东西,有很多都是参考了别人的,都忘记出处了,请大家谅解.参考微信开发者平台 https://open.weixin.qq.com/cgi-bin/showdocument?actio ...

  6. 源码之Queue

    看源码可以把python看得更透,更懂,想必也是开发人员的必经之路. 现在有个任务,写个线程池.使用Queue就能写一个最简单的,下面就来学学Queue源码. 源码之Queue: class Queu ...

  7. css-css权威指南学习笔记6

    第八章 padding/border/margin 1.对于只包含文本的行,能改变行间距里的属性只有line-height/font-size/vertical-align. 2.对行内非替换元素应用 ...

  8. ElasticSearch中bulkProcesser使用

    初次接触es,可能对增删改查很熟悉,以为能为得心应手,本次应用场景为 数据库变更一条记录,会触发更新es中的数据,每秒并发大概30条左右,测试环境一切工作正常(数据量较少),上线后发现日志中很多类似于 ...

  9. Linux下几款好用的录屏软件

    最近需要在Linux环境下录制一段视频,自己的Linux是LinuxMint Xfce 18,网上搜了一圈发现都不太顺手.尤其是VLC,感觉不是很易用,幸好最后在Linux自带的软件管理器找到了两个不 ...

  10. Linux终端使用代理服务器

    1.YUM添加代理服务器: [root@localhost /]# vim /etc/yum.conf 添加如下项目: proxy=http://172.16.1.188:8888/2.WGET添加代 ...