<script type="text/javascript">
var x = 1;
var y = 0;
var z = 0;
function add(n){n=n+1;}
y = add(x);
function add(n){n=n+3;}
z = add(x);
s=y+z;
</script>
求:
y的值是?
z 的值是?
s的值是?
我相信,肯定有同学会答错,当然,不是说他们不会,而是他们可能太大意了!
我们首先看function add,两个add都没有返回值,而我们知道,没有明确返回值的,全部返回undefined,所以,y和z都会是undefined,那么s自然也就不会是一个数字了,没错,s应该是NaN。
假如我们将题目改一下呢?如下:
<script type="text/javascript">
var x = 1;
var y = 0;
var z = 0;
function add(n){return n=n+1;}
y = add(x);
function add(n){return n=n+3;}
z = add(x);
s=y+z;
</script>
两个function add都有返回值了,那么,y,z,s会是多少呢?
不错,y和z都是4,s是8,为什么y不是2而是4呢?因为在javascript中,直接通过function申明的函数,后面定义的,会影响到之前的引用,如下:
<script type="text/javascript">
function x(){alert(2)};
x();//output 3
function x(){alert(3)};
x();//output 3
</script>
如果是通过var来申明的函数会是什么情况呢?我们看看:
<script type="text/javascript">
var x = function(){alert(0)};
x();//output 0
var x=function(){alert(1)};
x();//output 1
x();//output 1
</script>
通过var申明的函数,后面定义的并不会影响前面的引用。
如果两种模式混合,又会是什么情况呢?
<script type="text/javascript">
function x(){alert(2)};
x();//output 3
var x = function(){alert(0)};
x();//output 0
var x=function(){alert(1)};
x();//output 1
function x(){alert(3)};
x();//output 1
</script>
结果是这样的,你猜到了吗?
通过function定义的函数,后面定义的,照旧影响了前面的引用,但是不能改变通过var申明函数后的引用,反而,通过var申明的函数,改变了后来通过function申明函数之后的引用。
所以,如果:
<script type="text/javascript">
var x=function(){alert(1)};
x();
function x(){alert(3)};
x();
</script>
后面的x()出来的也会是1。
分享到:
相关推荐
JavaScript常见面试题
"JavaScript面试题集锦详解" 这篇文章涵盖了JavaScript的多个方面,包括eval函数、window和document对象、null和undefined的区别、数组的map方法、事件机制、use strict模式等。 eval函数 eval函数可以将字符串...
大公司javaScript经典面试题汇总
JavaScript 面试题知识点总结 JavaScript 面试题是前端开发领域中常见的面试题,涵盖了 JavaScript 基础、Web 前端开发等方面的知识点。本文将对 JavaScript 面试题的知识点进行总结,包括 Object.create、...
根据给定的信息,我们将深入分析并提取出与JavaScript面试题相关的知识点。 ### 一、单选题 #### 1. 以下哪条语句会产生运行错误: - **选项A**: `var obj = ();` - **解析**:在JavaScript中,括号`()`通常用于...
JavaScript面试题及答案-共60道.docx JavaScript面试题及答案-共60道.docx JavaScript面试题及答案-共60道.docx JavaScript面试题及答案-共60道.docx JavaScript面试题及答案-共60道.docx JavaScript面试题及答案-共...
百度JavaScript前端面试题总结 本文总结了百度前端JavaScript面试题,涵盖了多个知识点,包括左定右自适应布局、GetPosition方法、模拟fadeIn和fadeOut、call和apply的区别和应用场景、创建a标签点击弹出对应序号、...
面试题练习题前端 JavaScript高级语法-字符串属性面试题练习题前端 JavaScript高级语法-字符串属性面试题练习题前端 JavaScript高级语法-字符串属性面试题练习题前端 JavaScript高级语法-字符串属性面试题练习题前端...
JavaScript是一种广泛应用于Web开发的...以上是对这套JavaScript面试题的解析,涵盖的知识点全面,适合准备JavaScript面试的开发者进行自我检测和学习。理解并掌握这些知识点,对于提升JavaScript编程能力大有裨益。
JavaScript 数组面试题
面试中,JavaScript 的知识点涵盖了许多方面,以下是一些常见的问题及其解答: 1. **typeof 返回的数据类型** JavaScript 的 `typeof` 操作符可以返回一个变量的数据类型,包括 `string`, `boolean`, `number`, `...
人人网作为知名的社交网络平台,其面试题往往能反映出业界对JavaScript开发者技能的要求。以下将根据提供的信息,详细阐述JavaScript面试题可能涉及的知识点,并给出相应的实现思路。 1. **变量声明与作用域** - *...
这篇文章为面试者提供了关于JavaScript常考面试题的详细解析。文章内容包括JavaScript基础概念、语法和概念、DOM操作、高级特性以及常见面试题及解答。文章旨在帮助面试者更好地准备JavaScript相关的面试,提高对...
该资源是5个常见的JavaScript面试题以及它们的答案
这份“js.rar”压缩包文件包含了关于JavaScript的面试题,是帮助求职者准备JavaScript面试的重要资源。以下是根据标题、描述和标签提炼出的一些关键JavaScript知识点,这些内容对于理解和掌握JavaScript至关重要。 ...
2022年JavaScript常见面试题
JavaScript最新面试题2021年,常见面试题及答案汇总.md
JavaScript面试笔试题主要涵盖了许多核心概念和技术,包括但不限于对象、类、构造函数、修饰符、内存管理、集合、异常处理、接口、字符串操作以及语法细节。以下是对这些知识点的详细解释: 1. **对象和赋值**:在...
javascript JavaScript面试题及答案-共50道.docx
JavaScript面试题总结 JavaScript 是一门广泛应用于 Web 开发的编程语言,掌握 JavaScript 是每个 Web 开发者的必备技能。本文总结了 JavaScript 面试题的重要知识点,涵盖了 JavaScript 基础知识、DOM 操作、事件...