前面写过jquery对象存在与否的判断。现在谈下Js中判断变量存不存在的问题。

如果这样if(!a),当变量a在js中没有申明时,就会报错,那么接下去的代码将不会被执行。注意,这种判断只要变量申明过,if条件都会通过。比如

<script>
var a = null;
var b;if(!a){alert("通过")
}
if(!b){alert("通过")
}</script>

  

以上代码会弹出两个“通过”。说明这种判断只是判别变量是否在js里声明过,而不管其内容时什么。更深层的解释是:undefined和null在if语句中,都会转换为false。

对于没有申明过的变量情况,上述判断不行了。应该用typeof,例子:

<script>
var a = null;
var b;if(typeof a!="undefined"){alert("is defined")}else{alert(" is undefined")}if(typeof b!="undefined"){alert("is defined")}else{alert(" is undefined")}if(typeof c!="undefined"){alert(" is defined")}else{alert(" is undefined")}</script>

  

上述代码的3个弹窗:第1个走if,第2,3都走else。虽然变量c并没有声明,但程序不会报错。而只声明的b,跟c的结果一样。注意,不要试图把3个看上去重复的弹窗封装成1个函数,因为对于变量c这样的传值,都会报错!实际应用中,都是在if里面判断 ,也用不着函数封装。

可能会有好奇,a的typeof 不等于 “undefined”,事实上,typeof null返回“object”:

<script>
var a = null;
alert(typeof a)//object
</script>

typeof返回的字符串有限,null,Array,自定义的对象类型都会返回“object”,如果我们要详细的判断,则需要借助instanceof了。Java中也有此方法,含义是判断某个变量是否属于某个类,是个二元运算符,而typeof是一个一元运算符(变量只有1个)。Instanceof的例子很多,网上搜搜。

转载于:https://www.cnblogs.com/xiaochongchong/p/5527732.html

Js中判断变量存不存在的问题相关推荐

  1. JS中判断变量是否为数字方法

    推荐教程:<JavaScript视频教程> JavaScript 是一种动态类型语言,这意味着解释器在运行时确定变量的类型.实际上,这也允许我们在相同的代码中使用相同的变量来存储不同类型的 ...

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

    1.作用: typeof 运算符返回一个用来表示表达式的数据类型的字符串.  可能的字符串有:"number"."string"."boolean&q ...

  3. js中判断变量不为空或null或“”

    if(判断表达式){执行内容 }如果判断表达式为true,则执行括号中的内容.这里,变量如果不为0,null,undefined,false,都会被处理为true.只要变量有非0的值或是某个对象,数组 ...

  4. JS中判断变量是否为数字

    1.Number.isFinite():Number.isFinite() 方法用来检测传入的参数是否是一个有穷数. 2.Number():把对象的值转换为数字. 3.Number.isNaN() : ...

  5. js中判断变量不为空或null

    var content=$("content").val(); if(!content){ alert("请输出内容!"); return; } //上述内容相 ...

  6. js 判断变量是否有值返回bool_基础 |判断 JS 中的变量类型竟然可以如此简单

    原标题:基础 |判断 JS 中的变量类型竟然可以如此简单 嗨 这里是IMWEB 一个想为更多的前端人 享知识 助发展 觅福利 有情怀有情调的公众号 欢迎关注转发 让更多的前端技友一起学习发展~ 正文 ...

  7. js中判断两个对象是否相等。

    js中判断两个对象是否相等. js中的Object.Array.Function等复杂数据类型,是无法直接用==和===操作符进行比对的. Object对比 const tar = { name:'张 ...

  8. Javascript开发技巧(JS中的变量、运算符、分支结构、循环结构)

    一.Js简介和入门 继续跟进JS开发的相关教程. <!-- [使用JS的三种方式] 1.HTML标签中内嵌JS(不提倡使用): 示例:<button οnclick="javas ...

  9. js中判断数据类型的方法

    JS中判断数据类型的方法: 使用typeof操作符. 对一个值使用 typeof 操作符可能返回下列某个字符串,返回的类型都是字符串形式. (1) undefined:如果这个值未定义 (2) boo ...

最新文章

  1. mvc html编辑器,MVC3 Html编辑器助手显示旧模型值
  2. C# System.Runtime.InteropServices 相关学习总结
  3. 基于asp.net + easyui框架,一步步学习easyui-datagrid——界面(一)
  4. 超好用的5款开发工具,Python初习者必看
  5. CoreAnimation —— CAReplicatorLayer(拷贝图层)
  6. 有进度条圆周率Π计算
  7. 「技术人生」第6篇:技术同学应该如何理解业务?
  8. 数字化赋能智能生产,一套数据决策分析体系,完美解决生产管理
  9. artTemplate模板引擎的源码拜读
  10. 计算机excel公式教案,Excel利用函数进行数据计算(教案)
  11. 科密考勤机对比和参考价
  12. 微信native支付
  13. coreldraw橙子怎么画_CorelDRAW(CDR)设计绘制质感的橙子和冰块实例教程
  14. (疯狂的石头)阿弥陀佛,上帝保佑铃声 (疯狂的石头)阿弥陀...
  15. code::blocks自动补全诸如socket或者其它一些库中的函数
  16. 男生哪个瞬间让你心疼?
  17. 电脑显示屏只显示中间部分其他地方不显示问题
  18. 降甘油三脂 的中药/中成药
  19. CentOS7.5 重装 SSH 与 禁止网卡休眠
  20. 《写给大家看的设计书(第3版)》

热门文章

  1. SAP MM 公司间STO发货单输出报错 - 合并工厂AUC1和存储位置6002没有货物收货地点 - 之对策
  2. 不投降就是成功 --- 我看《新喜剧之王》
  3. 马库斯再批深度学习:20年毫无进展,无法处理语言复杂性
  4. 神经网络中激活函数的真正意义?
  5. Centos7如何轻松配置yum国内源
  6. 后香农时代,华为提出10大数学挑战问题
  7. 科技部:学术不端零容忍!违规人员所获职称、奖金等全部清退归零
  8. 汽车与智能家居互联时代 语音控制很关键
  9. 2018人工智能前沿报告:深度学习的应用和价值
  10. iRank: 基于互联网类脑架构的阿尔法鹰眼发展趋势评估