JQuery学习笔记:typeof的使用

转载 2013年12月04日 16:19:50

转载:http://www.cnblogs.com/yzx99/archive/2008/07/28/1254356.html


JQuery的前面几句就把我给搞得晕了头,只能对其中的一点一滴去测试。第一句:
if (typeof window.jQuery == "undefined")

typeof的语法是:typeof[(]expression[)]
即typeof后面跟一个表达式,要不要括号都可以。它将返回一个字符串,表示表达式

的类型,而类型只有六种可能:number、string、boolean、object、function、

undefined
这是typeof返回的类型,与实际的数据类型,以及内部对象还是有区别的。
实际的类型可以参考微软的一份JScript帮助文档中的“JScript 的数据类型”,其中

还有null,但null经过typeof返回的类型是object。而一个变量,如果没有赋值时,

它的类型为undefined,但它值为null。
var x;
alert(typeof(x));
if (x==null) alert("OK");
内部对象比这六个多,其中五个有对应的,它们都在首字母大写:Number、String、

Boolean、Object、Function。undefined没有对应对象。

以下把几种情况都列出来:
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的构建体就执行了两遍。


typeof的用法汇总

JavaScript中的typeof其实非常复杂,它可以用来做很多事情,但同时也有很多怪异的表现.本文列举出了它的多个用法,而且还指出了存在的问题以及解决办法. > typeof und...
  • alex8046
  • alex8046
  • 2014年11月18日 09:42
  • 705

typeof详解及Linux 中list_head 如何使用

#include #include #include #include #include #include MODULE_LICENSE("Dual BSD/GPL"); struct g...
  • ychongx
  • ychongx
  • 2014年06月15日 20:55
  • 880

C# GetType和typeof的区别

typeof: The typeof operator is used to obtain the System.Type object for a type.   运算符,获得某一类型...
  • mikemiller2
  • mikemiller2
  • 2015年07月14日 23:38
  • 1292

为什么jQuery是用toString来判断数据类型,而不是typeof或instanceof

// Numbers typeof37 === 'number'; typeof3.14 === 'number'; typeofMath.LN2 === 'number'; typeofInfini...
  • woxueliuyun
  • woxueliuyun
  • 2013年01月10日 11:41
  • 13717

[JS]js中判断变量类型函数typeof的用法汇总

1、作用: typeof 运算符返回一个用来表示表达式的数据类型的字符串。  可能的字符串有:"number"、"string"、"boolean"、"object"、"function" 和 "un...
  • szwangdf
  • szwangdf
  • 2015年01月08日 14:28
  • 17734

JavaScript 中 typeof 和 instanceof 的区别及如何判断数组

JavaScript 中 typeof 和 instanceof 的区别及如何判断数组
  • qq_28080659
  • qq_28080659
  • 2016年11月04日 22:36
  • 133

log4net 的使用方法

         log4net是一个进行日志输出的.net开源组件,可以将日志按照配置文件的设置定向输出到不同的目标处(比如控制台、系统日志、文件等)。log4net可以从http://source...
  • txwd0033
  • txwd0033
  • 2008年02月25日 10:45
  • 2042

jQuery插件开发的五种形态小结

关于jQuery插件的开发自己也做了少许研究,自己也写过多个插件,在自己的团队了也分享过一次关于插件的课。开始的时候整觉的很复杂的代码,现在再次看的时候就清晰了许多。这里我把我自己总结出来的东西分享出...
  • alex8046
  • alex8046
  • 2015年07月15日 17:10
  • 564

JS中的typeof

js中的typeof用来检查一个变量的数据类型,它返回的是一个字符串。不同类型变量经typeof运算符后返回的值如下: undefined:“undefined” null:“object” st...
  • VivianHope
  • VivianHope
  • 2015年06月20日 10:10
  • 2010

javascripr 的typeof

Document 神奇的typeof 因为数组和对象的typeof结果都是object;那么如何更准确的判断这是个数组还是和对象呢?       var a = typeof(121...
  • qq_40774743
  • qq_40774743
  • 2018年02月01日 16:31
  • 7
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JQuery学习笔记:typeof的使用
举报原因:
原因补充:

(最多只允许输入30个字)