JavaScript函数同名覆盖问题

在JavaScript脚本中,局部函数与外围函数同名,则会覆盖掉外网函数,即变量可以重复定义。

见下面的例子。

A =  function(){
	var me = this;
	me.method1 = function(){
		var items = [1,2,3,4,5];
		for(var i=0;i<items.length;i++){
			if(1){
				var items = [6,7,8];

				if(items.length == 0){
					alert('test is ok!');
				}
				alert(items[i]);
			}
		}
	}
}

局部变量items的定义如下:

var items = [5,6,7];

将覆盖外网变量的定义:

var items=[1,2,3,4,5];

循环只能执行3次。

解决的办法是使用不同的函数名,避免函数同名。

时间: 2024-11-08 20:46:11

JavaScript函数同名覆盖问题的相关文章

[JavaScript] 函数同名问题

存在同名函数时,最后的函数会覆盖掉以前的同名函数. 1 var x = 1, 2 y = z = 0; 3 function add(n) { 4 return n = n + 1; 5 } 6 y = add(x); 7 function add(n) { 8 return n = n + 3; 9 } 10 z = add(x); 11 console.log(x);//x值未变1 12 console.log(y);//4 13 console.log(z);//4

JavaScript函数及其prototype

一.定义 函数可以通过声明定义,也可以是一个表达式. (1)函数声明式: 分号是用来分隔可执行JavaScript语句,由于函数声明不是一个可执行语句,所以不以分号结束. function a(){ console.log('bbb'); } (2)函数表达式: 函数表达式以分号结尾,因为它是一个执行语句. var a = function(){ console.log('aaa'); } (3)声明式变体: var a = function a(){ console.log('bbb'); }

JavaScript函数和对象提高!!!!!!

JavaScript函数和对象提高!!!!!! 主要内容介绍 函数 函数的概念 函数的参数 函数的返回值 函数的作用域 变量提升和函数提升 函数参数传递方式 对象 什么是JavaScript对象 创建对象的两种方式 对象属性的基本操作 创建自定义对象 函数的4种调用方式(简单介绍) 一.函数 函数小测验 函数复习测试题 1.1 函数基本概念 1.1.1 什么是函数 函数是定义一次但可以调用或执行任意多次的一段JavaScript代码. 函数也叫做方法(了解概念) 当一个函数在一个对象上被调用的时

理解JavaScript函数参数

前面的话 javascript函数的参数与大多数其他语言的函数的参数有所不同.函数不介意传递进来多少个参数,也不在乎传进来的参数是什么数据类型,甚至可以不传参数. arguments javascript中的函数定义并未指定函数形参的类型,函数调用也未对传入的实参值做任何类型检查.实际上,javascript函数调用甚至不检查传入形参的个数 ? 1 2 3 4 5 6 7 function add(x){ return x+1; } console.log(add(1));//2 console

javascript函数定义以及常见用法

              我们知道,js函数有多种写法,函数声明 ,函数表达式,Function式构造函数,自执行函数,包括Es6的箭头函数,Class类写法,高阶函数,函数节流/函数防抖,下面我就开始讲关于上面几种类型的最基本用法. 函数声明式写法 这种写法是最基本的写法 ,使用关键字 function 定义函数,函数声明后不会立即执行,会在我们需要的时候调用到.这种函数是全局的,如果有两个同名的声明式函数存在,那么第二个会覆盖第一个. function Test(){ } 有个面试题如下,

ABP展现层——Javascript函数库

ABP展现层——Javascript函数库 点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之21.ABP展现层——Javascript函数库 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ABP的官方网站:http://www.aspnetboilerplate.com ABP在Github上的开源项目:https://github.com/aspnetboilerplate ASP.NET Boil

javascript函数及作用域的小结

在js中使用函数注意三点:1.函数被调用时,它是运行在他被声明时的语法环境中的: 2.函数自己无法运行,它总是被对象调用的,函数运行时,函数体内的this指针指向调用该函数的对象,如果调用函数时没有明确指定该对象, this 默认指向 window ( strict 模式除外,本文不涉及 strict 模式): 3.函数是一种带有可执行代码的对象类型数据. 一.声明函数 1.使用 function 关键字 代码如下: function myfun(a,b){ //声明名为myfun的函数 ret

JavaScript 函数作用域的“提升”现象

在JavaScript当中,定义变量通过var操作符+变量名.但是不加 var 操作符,直接赋值也是可以的.例如 : message = "hello JavaScript ! " 即定义了一个全局变量message,并赋值 "Hello JavaScript!"--<JavaScript高级程序第三版> 如同往日一般,一群人在所谓的技术交流群里面相互斗图着.突然老王莫名的正经起来,在群里发了一道JavaScript的题目,让大家猜一猜这道题的答案. v

JavaScript 函数的执行过程

每一个JavaScript函数都是Function对象的一个实例, 它有一个仅供JavaScript引擎存取的内部属性[[Scope]]. 这个[[Scope]]存储着一个作用域的集合, 这个集合就叫”作用域链”, 集合中存储着”可变对象”VO或”活动对象”AO(AO比VO多this和arguments属性). 当函数被创建后, 其父级作用域的作用域链中的所有可变对象会被加入到它的[[scope]]中(如果父作用域是全局, 那么当前函数的作用域链中就只会加入一个全局对象). 当函数被执行时, 函