哪种方法检查变量是否已初始化是更好/正确的方法? (假设变量可以容纳任何内容(字符串,整数,对象,函数等)。

if (elem) { // or !elem

要么

if (typeof(elem) !== 'undefined') {

要么

if (elem != null) {

#1楼

在JavaScript中,可以定义一个变量,但是将其值保留为undefined ,因此最常见的答案在技术上并不正确,而是执行以下操作:

if (typeof v === "undefined") {

// no variable "v" is defined in the current scope

// *or* some variable v exists and has been assigned the value undefined

} else {

// some variable (global or local) "v" is defined in the current scope

// *and* it contains a value other than undefined

}

这可能足以满足您的目的。 以下测试具有更简单的语义,这使得更容易精确地描述代码的行为并亲自理解(如果您关心这样的事情):

if ("v" in window) {

// global variable v is defined

} else {

// global variable v is not defined

}

当然,这假定您正在浏览器中运行(其中window是全局对象的名称)。 但是,如果您想像这样的全局变量,则可能是在浏览器中。 从主观上讲, 'name' in window使用'name' in window样式上与使用window.name引用全局变量一致。 作为window属性而不是变量访问全局变量,可以使您在代码中引用的未声明变量的数量最少(以利于衬里),并避免全局变量被局部变量覆盖的可能性。 另外,如果全局对象使您的皮肤爬行,则仅用此相对较长的棍子接触它们时,您可能会感到更舒适。

#2楼

if (typeof console != "undefined") {

...

}

或更好

if ((typeof console == "object") && (typeof console.profile == "function")) {

console.profile(f.constructor);

}

适用于所有浏览器

#3楼

在问题概述的特定情况下,

typeof window.console === "undefined"

与...相同

window.console === undefined

我更喜欢后者,因为它更短。

请注意,我们仅在全局范围(在所有浏览器中都是window对象)中查找console 。 在这种特殊情况下,这是可取的。 我们不希望在其他地方定义console 。

@BrianKelley在他的出色回答中解释了技术细节。 我仅添加了缺少的结论,并将其摘要为更易于阅读的内容。

#4楼

最高答案是正确的,请使用typeof。

但是,我想指出的是,在JavaScript中, undefined是可变的(出于某些不敬虔的原因)。 因此,仅检查varName !== undefined就有可能无法总是按预期返回,因为其他库可能已更改为undefined。 一些答案(@skalee的答案)似乎更喜欢不使用typeof ,这可能会给您带来麻烦。

“旧”的方式来处理这个问题被宣布不定位为VAR,以抵消任何潜在的静音/的压倒一切的undefined 。 但是,最好的方法仍然是使用typeof因为它将忽略其他代码中所有undefined覆盖。 尤其是如果您正在编写要在野外使用的代码,那么谁又知道该页面上可能还会运行什么……

#5楼

您可以使用typeof运算符。

例如,

var dataSet;

alert("Variable dataSet is : " + typeof dataSet);

上面的代码片段将返回类似的输出

变量dataSet是:未定义。

java检查变量是否定义_JavaScript检查变量是否存在(已定义/初始化)相关推荐

  1. java定义私有变量_Java Reflection(七):私有变量和私有方法

    在通常的观点中从对象的外部访问私有变量以及方法是不允许的,但是Java反射机制可以做到这一点.使用这个功能并不困难,在进行单元测试时这个功能非常有效.本节会向你展示如何使用这个功能. 注意:这个功能只 ...

  2. 如何检查Bash中是否设置了变量?

    我如何知道是否在Bash中设置了变量? 例如,如何检查用户是否将第一个参数赋予函数? function a {# if $1 is set ? } #1楼 检查是否设置了变量 var="&q ...

  3. 【Flutter】Flutter 开发环境搭建 ( Android Studio 下 Flutter / Dart 插件安装 | Flutter SDK 安装 | 环境变量配置 | 开发环境检查 )

    文章目录 一.Flutter 学习资料 二.Flutter 开发环境搭建 三.Android Studio 环境安装 Flutter / Dart 插件 四.下载 Flutter SDK 五.设置 F ...

  4. java 在主方法中定义两个变量 调用方法进行加10_计算机考试二级考试Java模拟试题附答案...

    全国计算机等级考试二级考试,需要考生在考前做好足够的复习准备,下面小编为大家带来计算机考试二级考试Java模拟试题,供各位考生练习! 计算机考试二级考试Java模拟试题一 1.类Test1定义如下:p ...

  5. java 定义多个变量_学了Java才搞懂JMeter测试计划

    文 | 老树 本文的内容是对这个界面的东西进行讲解: Name 名字,测试计划总得有个名字. Comments 注释,除了名字,还得让人知道它是干嘛的. User Defined Variables ...

  6. java 中定义整形变量_智慧职教: 在Java语言中,一条语句可以定义多个变量。例如int a; b;就定义了两个整型变量a 和b。...

    智慧职教: 在Java语言中,一条语句可以定义多个变量.例如int a: b:就定义了两个整型变量a 和b. 答:0 "物的依赖性关系"是( ) 答:资本主义社会之中的人与人之间的 ...

  7. JAVA创建一个Box类(长方体),在Box类中定义三个变量,分别表示长方体的长(length)、宽(width)和高(heigth)

    编程创建一个Box类(长方体),在Box类中定义三个变量,分别表示长方体的长(length).宽(width)和高(heigth),再定义一个方法void setBox(int l, int w, i ...

  8. 《JAVA》编程创建一个Box类(长方体),在Box类中定义三个变量

    问题:编程创建一个Box类(长方体),在Box类中定义三个变量,分别表示长方体的长(length).宽(width)和高(heigth),再定义一个方法void setBox(int l, int w ...

  9. Java类定义、成员变量定义、方法定义、成员变量与局部变量的区别

    编程语言的三大发展阶段:面向机器语言.面向过程语言.面向对象语言 : 其中面向对象语言主要体现三个特征:封装性.继承.动态 : 类的定义:类声明和类体.基本格式如下: class 类名{    类体 ...

最新文章

  1. vector与结构体联合使用 在磁盘中生成.txt 文件
  2. Did you forget add @script or @script_method annotation? If this is a nn.ModuleList, add it to __con
  3. java关闭ie提示_java 关闭IE
  4. Bochs调试及相关仿真工具的使用方法
  5. 二叉搜索树中第k大元素_二叉搜索树中第K个最小元素
  6. 朋友面试被问到---静态构造函数
  7. 对象 复制构造函数
  8. 极客大学架构师训练营 秒杀 搜索引擎 爬虫 Lucene Elastic Search 第18课 听课总结
  9. 0. Unix / Linux操作系统介绍
  10. 权重计算方法二:熵权法(EWM)
  11. 74HC595中文资料
  12. 调用微信扫一扫接口---实现二维码扫描(微信浏览器)
  13. 设计模式-抽象工厂模式
  14. 浏览器显示海康摄像头实时预览画面纯前端解决方案
  15. 构建之法---第一次作业
  16. 你的微信版本过低,无法正常使用此小程序,请更新微信到最新版本。
  17. 欲登千层楼,又何惧寒风
  18. SAP BP 业务实践与ABAP 分享
  19. win10 64位搭建汇编环境debug
  20. ts报错:Object is possibly ‘undefined‘.Vetur(2532)

热门文章

  1. fedora安装pyenv实现python的版本管理
  2. ASP.NET Aries 入门开发教程7:DataGrid的行操作(主键操作区)
  3. ASP.NET站点构建之减少不必要的请求
  4. 堆内存 和 栈内存的简单理解 (未完待续~)
  5. while循环与for循环
  6. strcmp() Anyone? UVA - 11732 左孩子右兄弟Trie/计数
  7. 数组作为方法的返回值
  8. linux 快组描述符,Linux 进程描述符 task struct
  9. 02-04 Python库-faker
  10. python结构_Python 项目的结构