Jquery typeof的使用方法详解

ypeof语法: typeof([extension])

即typeof后边跟一个表达式,要不要括号都可以。它将返回一个字符串,表示表达式的类型,而表达式的类型只有六种可能:number、string、boolean、object、function、undefined

实际的类型可以参考微软的一份JScript帮助文档中的“JScript 的数据类型”,其中还有null,但null经过typeof返回的类型是object。而一个变量,如果没有赋值时,它的类型为undefined,但它值为null。

typeof的误用:

if (x == undefined) if (typeof(x) == undefined) 正确的应该是 if (typeof(x) == "undefined")

对比这两句话: //var x; if (typeof(x) == "undefined") alert("OK1"); if (x==null) alert("OK2");

有定义语句var x;时,两句都执行正常。 如果没有定义语句时,第一句没问题,第二句就提示'x'未定义

再对比这两句:

x=null; if (typeof(x) == "undefined") alert("OK1"); if (x==null) alert("OK2");

因此用typeof来检测变量是否有定义是最合适不过的了

以下把几种情况都列出来:

n=12.2;
alert("n=12.2:" + typeof n);

n="12.2";
alert("n=\"12.2\":" + typeof n);

n=false;
alert("n=false:" + typeof n);

n=[12, 11, 13];
alert("n=[12, 11, 13]:" + typeof n);
alert("n[1]:" + typeof n[1]);

obj=function (){var i=0; function show() { alert(i); }};
n=new obj();
alert("n=new obj():" + typeof n);

n=function () { alert("OK"); };
alert("n=function () { alert(\"OK\"); }:" + typeof n);

alert("nnnnnn:" + typeof nnnnnn);

alert("null:" + typeof null);

以typeof的误用有如下两种情况:

if (x == undefined)
if (typeof(x) == undefined)
正确的应该是
if (typeof(x) == "undefined")

对比这两句话:

//var x;
if (typeof(x) == "undefined") alert("OK1");
if (x==null) alert("OK2");

有定义语句var x;时,两句都执行正常。
如果没有定义语句时,第一句没问题,第二句就提示'x'未定义

再对比这两句:

x=null;
if (typeof(x) == "undefined") alert("OK1");
if (x==null) alert("OK2");

因此用typeof来检测变量是否有定义是最合适不过的了。返回到最原始的问题:
if (typeof window.jQuery == "undefined")
{
 var jQuery = ...
 ...
}

这段代码加上里面的程序体,就能够保证程序体只被执行一次,第二次执行时,

typeof window.jQuery就是"function"了。举例:有个文件,script引用写了两遍
1.htm
<html>
<head>
<script language="javascript" type="text/javascript"

src="D:/inetpub/JQuery/JQ.js"></script>
</head>
<body>
<script language="javascript" type="text/javascript"

src="D:/inetpub/JQuery/JQ.js"></script>
<script>
alert("|" + $.trim("  abc  ") + "|");
</script>
</body>
</html>

通过断点,我们可以看出对于jQuery的构建,只在第一次执行。

不过,我感到可惜的是,如果不同窗口,就要分别执行了。如以下两个文件:
1.htm
<html>
<head>
<script language="javascript" type="text/javascript"

src="D:/inetpub/JQuery/JQ.js"></script>
</head>
<body>
<a href="2.htm">链接到第二个页面2.htm</a>
<script>
alert("|" + $.trim("  abc  ") + "|");
</script>
</body>
</html>

2.htm

<html>
<head>
<script language="javascript" type="text/javascript"

src="D:/inetpub/JQuery/JQ.js"></script>
</head>
<body>

第二页面

<script>
alert("|" + $.trim("  abc  ") + "|");
</script>
</body>
</html>
jQuery的构建体就执行了两遍。

时间: 2024-11-14 12:30:04

Jquery typeof的使用方法详解的相关文章

jquery 遍历数组 each 方法详解_jquery

JQuery拿取对象的方式 $('#id') :通过元素的id $('tagName') : 通过元素的标签名 $('tagName tagName') : 通过元素的标签名,eg: $('ul li') $('tagName#id): 通过元素的id和标签名 $(':checkbox'):拿取input的 type为checkbox'的所有元素: Eg: <input type="checkbox" name="appetizers" value="

PHP+JQuery+Ajax实现分页方法详解_php技巧

本文实例讲述了PHP+JQuery+Ajax实现分页的方法.分享给大家供大家参考,具体如下: 为了锻炼下jQuery,决定自己动手写写分页 最终的效果如图: 点击某个字母后,下方显示以该字母为首字母的所有词语: 分页显示,每页显示15个词语,每组页码有20个,1-20/20-40--- 首先是在PHP文件中的分页Pager的相关代码 public function searchWordsByInitial() //从AJAX发出的URL中获得参数:用户点击的字母和点击的页码 $initial =

jQuery.load()事件使用方法详解

.load( url, [ data ], [ complete(responseText, textStatus, XMLHttpRequest) ] ) 返回: jQuery 描述: 载入远程 HTML 文件代码并插入至 DOM 中. version added: 1.0.load( url, [ data ], [ complete(responseText, textStatus, XMLHttpRequest) ] ) url一个包含发送请求的URL字符串 data向服务器发送请求的K

jQuery 跳出each循环方法详解

jQuery 跳出each循环不能使用break和continue,要使用return, break----用return false; continue --用return ture;    代码如下 复制代码 $.each(array,function()...{    if(条件1成立)...{      return true; //相当于continue;    }    if(条件2成立)...{      return false; //相当于break;    } }); 具体如

jQuery post()事件使用方法详解

通过服务器HTTP POST请求加载数据 version added: 1.0jQuery.post( url, [ data ], [ success(data, textStatus, jqXHR) ], [ dataType ] ) url一个包含发送请求的URL字符串 data向服务器发送请求的对象或者字符串参数 success(data, textStatus, jqXHR)当请求成功后执行的回调函数. dataType从服务器返回的预期的数据类型.默认:智能猜测(xml, json,

jQuery原型属性和原型方法详解_jquery

首先看一下在jQuery1.7.1中定义的原型属性和方法有哪些? 首先是constructor属性  相信熟悉js面向对象部分的开发人员都熟悉,就是用来返回对象属性创建的函数,举个简单的例子: function Person(){}; var person=new Person(); alert(person.constructor); //function Person(){} 我们写继承的时候喜欢把所有的原型属性和方法放在一个单独的对象字面量中,这样就会导致constructor属性与"实际

jquery ajax局部加载方法详解(实现代码)_jquery

在jquery中实现ajax加载的方法有很多种,不像以前的js的ajax只有那一种,下面我们介绍jquery ajax实现局部加载方法总结,有需要了解的朋友可参考. 例 $.ajax({ url: "hotelQuery!queryHotelByCity.action", type: "post", dataType: "html", data: "queryHotel.city="+cityobj.value+"&

jQuery使用contains过滤器实现精确匹配方法详解_jquery

本文实例讲述了jQuery使用contains过滤器实现精确匹配的方法.分享给大家供大家参考,具体如下: :contains 选择器选取包含指定字符串的元素. 该字符串可以是直接包含在元素中的文本,或者被包含于子元素中. 经常与其他元素/选择器一起使用,来选择指定的组中包含指定文本的元素,如: $("p:contains(is)") 表示选择所有包含 "is" 的 <p> 元素. 再如: $("p:contains(张三)") 或 $

jQuery Validation PlugIn的使用方法详解_jquery

一.用前必备  官方网站:http://bassistance.de/jquery-plugins/jquery-plugin-validation/  API: http://jquery.bassistance.de/api-browser/plugins.html  当前版本:1.5.5  需要JQuery版本:1.2.6+, 兼容 1.3.2  <script src="../js/jquery.js" type="text/javascript"&g