研究Maximum call stack size exceeded异常

我在使用bootstrap的过程中发现,使用的他的modal的过程中.如果我弹出一个modal.然后再这个modal中再次触发新的modal.bootstrap就陷入了无穷循环了.这样会导致无法多重使用modal.估计是bootstrap的一个bug. 首先我们要自己制造异常.然后用相关代码快速解决异常.
//第一种方式
Math.power = Math.pow;

			Math.pow = function(x, y) {
				if (x != 0) {
					return Math.power(x, y);
				} else {
					return 0;
				}
			}
			//if (Math.power == null) { //Solution: 如果Math.power 已经在别的地方定义过了,再次这样重新定义,会导致循环引用
				
				Math.power = Math.pow;

				Math.pow = function(x, y) {
					if (x != 0) {
						return Math.power(x, y);
					} else {
						return 0;
					}
				}
			//}
//第二种方式
Math.power = Math.pow;
			Math.pow = function(x, y) {
				if (x != 0) {
					return Math.pow(x, y);
					//return Math.power(x, y);//Solution:启用这句可以解决问题.
				} else {
					return 0;
				}
			}
上面我写了两种方式来制造这种异常.然后把里面注释的语句启用.就可以避免这种异常.

你可能感兴趣的:(JavaScript)