js 值和类型
来源:互联网 发布:优品课堂python百度云 编辑:程序博客网 时间:2024/06/06 00:06
javascript中变量没有类型,只有值有类型。变量可以随时持有任何类型的值。
var a = 42;typeof a;//"number"a = true;typeof a;//"boolean"typeof typeof 45;//"string"//变量在未持有值的时候为undefined,即typeof 返回 “undefined”。var a;typeof a;//"undefined"typeof b;//"undefined"a;//undefinedb;//ReferenceError;b is not defined
上面代码中的b为undeclared,没有在作用域中声明过的变量。但是浏览器对他的处理容易让人产生误解,typeof返回“undefined”,值返回is not defined 。这其实因为typeof的一个特殊的安全防范机制。
javascript将undefined和undeclared混为一谈,其实他们是两码事。undefined是值的一种,undeclared表示变量还没有被声明过。但是,有时通过typeof的安全防范机制(阻止报错)来检查全局的undeclared变量也是个不错的办法:
/*DEBUG为全局变量,“调试模式”的开关。在输出调试信息到控制台之前,会检测DEBUG变量是否已被声明 顶层的全局变量声明var DEBUG = true只在debug.js文件中有,只在开发及测试时加载到浏览器 */if(DEBUG){//抛错 console.log("Debugger is begin");}if(typeof DEBUG !== "undefined"){//安全 console.log("Debugger is begin");}//对内建API也有作用if(typeof atob === "undefined"){ atob = function(){/*contenrt*/};}
此外也可用判断全局变量是否是全局对象的属性检查:
/*DEBUG为全局变量,“调试模式”的开关。在输出调试信息到控制台之前,会检测DEBUG变量是否已被声明 顶层的全局变量声明var DEBUG = true只在debug.js文件中有,只在开发及测试时加载到浏览器 *///检查全局变量是否是全局对象的属性,浏览器全局对象是windowif(window.DEBUG){//安全 console.log("Debugger is begin");}if(!window.atob){//安全 // ..}//缺点是全局变量也可以使服务端 node.js
typeof同时也可用于非全局变量的检查以及另外的变量检查方法供参考:
//typeof在非全局变量的应用 function doSomethingCool(){ var helper = (typeof FeatureA !== "undefined") ? FeatureA : function(){/* .. default feature.. */} var val = helper();}/*其他模块和程序引入doSomethingCool()时。此函数会检测变量FeatureA是否已经在宿主 程序中定义过;是,就用现成的,否则自己定义*/
//一个立即执行函数表达式(LIFE)(function(){ function FeatureA(){/*.. my A feature..*/} //包含doSomethingCool(..) function doSomethingCool(){ var helper = (typeof FeatureA !== "undefined") ? FeatureA : function(){/* .. default feature.. */} var val = helper(); } doSomethingCool();})();/*这里FeatureA并不是全局变量,但是还是可以用typeof安全防范机制做检查,因为这里没有全局对象可用 下面是另一种方法:“依赖注入”设计模式*/function doSomethingCool(FeatureA){ var helper = FeatureA || function(){/*default feature*/} var val = helper();}
0 0
- js 值和类型
- js值类型和引用类型
- js 赋值?值类型和引用类型
- JS-1---类型,值和变量
- JS中基本类型值和引用类型值
- JS 日期时间比较 值类型和引用类型
- JS基本类型和引用类型的值
- JS基础类型和引用类型
- js基本类型和引用类型
- js中的基本类型和引用类型
- js的基本类型和引用类型
- js基本类型和引用类型
- Js简介和类型转换
- js判断浏览器类型和获取父窗体的值
- JS学习第五天----类型,值,和变量
- js基本数据类型和引用类型交换传值
- 【笔记】 《js权威指南》- 第3章 类型、值和变量 - 3.8 类型转换
- js高级——引用类型和值类型在函数中的使用
- Codeforces Round #408 (Div. 2) B.Find The Bone(模拟)
- IPC-进程间通信(一)Messager
- 使用XHProf查找PHP性能瓶颈
- SQL 执行计划的理解
- 我的笔记 接口
- js 值和类型
- jQuery记住密码
- 我的笔记 异常处理try{} catch(Exception e){} throws Exception
- ios 为APP设置App Store中的兼容性问题
- KWP2000协议:协议应用及实例分析
- Algorithm Gossip(5) 老鼠找迷宫(1)
- JS动态删除增加table行
- C 预处理器和C库
- 我的笔记 equals的用法介绍