javascript中变量与函数同名 ,以前没注意过这个问题,今天写代码的时候突然不小心写的函数名和变量的名字同名了!导致程序没办法正确运行!
下面直接贴上我的javascript代码!
/*自定义的调试小工具*/
//这是控制台的开关按钮(true表示开启,false表示关闭)
var CONSOLE_ENABLE = true; //讲CONSOLE_ENABLE变量设置为true则使用控制台,否则不使用控制台
/*不能把变量名字取为console,因为console是浏览器控制台打印日志的关键字, 正如console.log("打印日志内容")*/
//var console = null;
var myConsole = null;
var debugInfo = "<font color='red'>**********************</font><font color='blue'>console(控制台调试信息)</font><font color='red'>**********************</font>";
var cleanConsole = " <input type='button' value='清空console' οnclick='myCleanConsole()'>";
//在控制台(控制台即div层)中输出调试信息
function debug(text){
if (!CONSOLE_ENABLE) {
return;
}
if (myConsole == null) {
//如果没有控制台,则初始化控制台
initConsole();
}
//建议以后最好全部使用innerHTML(innerHTML浏览器兼容性比较好),不要使用innerText
myConsole.innerHTML += text;
myConsole.appendChild(document.createElement("BR"));
//scrollTop 位于对象最顶端和窗口中可见内容的最顶端之间的距离。
//offsetHeight 获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度。
myConsole.scrollTop = myConsole.offsetHeight;
}
//初始化控制台div层的样式
function initConsoleCSS(){
/*
* 在页面中直接写上css,页面的javascript特效正常,但是通过dom的方式动态加载css文件,页面的javascript特效会有闪动,这个问
* 题我在网上找了些解决方法,但是还是没解决掉页面闪动的问题,所以我暂时还没想到办法解决,所以这个问题先放一放,有时间再解决和研究这个问题
*
*/
var linkNode = document.createElement('link');
linkNode.rel="stylesheet";
linkNode.type="text/css";
linkNode.href="css/console.css";
var firstScriptNode = document.getElementsByTagName('script')[0];
document.getElementsByTagName('head')[0].insertBefore(linkNode, firstScriptNode);
}
//初始化控制台(没有样式的样子忽然一闪而过的问题,一闪而过之后又有了样式。这是个问题?)
function initConsole(){
initConsoleCSS();
/*
var linkNode = document.createElement('link');
linkNode.rel="stylesheet";
linkNode.type="text/css";
linkNode.href="console.css";
var firstScriptNode = document.getElementsByTagName('script')[0];
document.getElementsByTagName('head')[0].insertBefore(linkNode, firstScriptNode);
*/
myConsole = document.createElement("div");
myConsole.className = "consoleDiv";
myConsole.innerHTML = debugInfo + cleanConsole;
myConsole.innerHTML += "<br>";
document.documentElement.lastChild.appendChild(myConsole);
/*
var pageLastNode = document.documentElement.lastChild;
var divNode = "<div class='consoleDiv'>" + debugInfo + cleanConsole + "<br></div>";
pageLastNode.innerHTML += divNode;
*/
}
/*
* javascript中变量与函数同名
*具体可参考网页https://segmentfault.com/q/1010000003951963
*https://www.cnblogs.com/bugda/p/6036282.html
https://segmentfault.com/q/1010000003825413
1)函数声明会置顶
2)变量声明也会置顶
3)函数声明比变量声明更置顶:)
4)变量和赋值语句一起书写,在js引擎解析时,会将其拆成声明和赋值2部分,声明置顶,赋值保留在原来位置
5)声明过的变量不会重复声明
*/
//清空控制台(console)信息(有个问题需要注意:javascript中不要把变量名和方法名写成一样的名字,容易出问题)
function cleanConsole(){
myConsole.innerHTML = debugInfo + cleanConsole + "<br>";
}
function myCleanConsole(){
myConsole.innerHTML = debugInfo + cleanConsole + "<br>";
}