Language:javascript, parsed in: 0.002 seconds, using GeSHi 1.0.7.12
- @if (@newVar != @newVar)
- //该变量未定义
由于NaN是唯一一个不等于其自身的值,所以这段脚本能够正常运行。
条件编译示例--try catch语句
在教程的开始,我曾经提及条件编译如何由于在一些Ajax的JavaScript中的出现而显示出它值得自夸的一面。现在我要告诉你我所指的内容。一个Ajax脚本通常包含一个中心函数用于判断浏览器(ie、ff等)对产生异步请求对象的支持:
典型的ajax函数:
Language:javascript, parsed in: 0.020 seconds, using GeSHi 1.0.7.12- function HttpRequest(url, parameters){
- var pageRequest = false //variable to hold ajax object
- if (window.XMLHttpRequest) // if Mozilla, Safari etc
- pageRequest = new XMLHttpRequest()
- else if (window.ActiveXObject){ // if IE
- try {
- pageRequest = new ActiveXObject("Msxml2.XMLHTTP")
- }
- catch (e){
- try{
- pageRequest = new ActiveXObject("Microsoft.XMLHTTP")
- }
- catch (e){}
- }
- }
- else
- return false
- }
许多人认为try/catch语句能够顺利的测试Ajax支持,很不幸,这不是真的。那些不支持throw/catch的浏览器,比如IE 4.x,实际上会阻塞上面这段代码并返回一个错误。为了克服这个问题,条件编译能够用来粗行减一个真正跨浏览器的友好的Ajax处理函数:
真正的跨浏览器函数:
Language:javascript, parsed in: 0.008 seconds, using GeSHi 1.0.7.12- function HttpRequest(url, parameters){
- var pageRequest = false //variable to hold ajax object
- /*@cc_on
- @if (@_jscript_version >= 5)
- try {
- pageRequest = new ActiveXObject("Msxml2.XMLHTTP")
- }
- catch (e){
- try {
- pageRequest = new ActiveXObject("Microsoft.XMLHTTP")
- }
- catch (e2){
- pageRequest = false
- }
- }










