- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我只想在未设置 javascript 对象时设置值。我的(测试)函数如下所示:
var test = function(){
this.value = {};
this.setValue = function(seperator, newValue){
console.log((this.value[seperator] === "undefined")); //Why both times false?
if(typeof(this.value[seperator] === "undefined")){
this.value[seperator] = newValue;
}else{
//noop
}
console.log(this.value[seperator]);
}
}
var blubb = new test();
blubb .setValue("foo","bar");
blubb .setValue("foo","notme");
在js控制台中返回
false
bar
false
notme
有人能告诉我为什么两次“未定义”测试都告诉我未定义吗?
提前致谢
最佳答案
因为 undefined
在 JS 中不是字符串,它是 global 对象的属性,您可以使用 ===
按类型进行比较。
===
不仅会比较值,还会比较它们的类型:
1 === "1" // false
1 == "1" // true
试试这个:
console.log(( typeof this.value[seperator] === "undefined"));
typeof
运算符将变量类型转换为字符串,然后您才能检查您的变量是否等于字符串 undefined
。
在你的第二段代码中:
if(typeof(this.value[seperator] === "undefined")){
您在变量外部使用 typeof
运算符,因此您的代码首先检查 this.value[seperator] === "undefined"
是否返回 false
给你,然后你通过“typeof false”检查,它会为你返回 boolean
。
在最后一步,您的代码将转换为:
if( "boolean" ){
这始终是 true
,因为字符串不为空。
关于Javascript : Seems like typeof doesn't work,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19789469/
my $str='expire=0'; if ($str =~/expire\s*=\s* (?: 0[1-9]|[1-9][0-9])/){ print " found it "; } 它不
基本上,我尝试使用 strtoull 将十六进制字符串转换为 unsigned long long values。这是简单的代码 #include #include int main () {
#include #include #define SQUARE(x) (x*x) void main() { clrscr(); int i=3,j,k; j=
我正在尝试更改控件的属性,但它看起来好像已“锁定”,但实际上并非如此,因为当我右键单击该控件时,它显示该控件已解锁。 我使用的是 Visual Studio 2005,我从未使用过在提供的图片中似乎被
linux网络启动问题:device does not seem to be present解决办法 在整虚拟机时候经常会遇到虚拟机拷贝,然而拷贝之后网络配置会遇到错误 service netw
我正在主干上创建一个补丁,将它应用到另一个分支时,出现“补丁似乎已过时”错误。我没有在 Google 上找到解决方案。主干刚刚合并到分支。 我在 Windows 7 上使用 64 位 Tortoise
我有下面的 XAML block 'BaseStyles.xaml 引用此内容的表单在设计时有效,但在运行时无效。如果我的表单直接引用 Sh
我有一个带有自定义 TableCellViews 的 TableView,上面有 UILabels 和 UIButtons。当其中一个按钮被粘贴时,我想显示一个描述按钮文本的“工具提示”。 除了当我尝
我有一个像这样的文本文件,我想解析该文本文件中的信息。 #title キミと☆Are You Ready? #artist トライクロニカ #mobile deresimu #easy 0 #norm
我有一个UITableView,用户可以在其中插入新行。发生这种情况时,我想重新加载表中的所有旧行。一种解决方案是在插入发生后立即调用 reloadData,这完全有效,但这意味着我看不到插入动画。
以下 scala 代码无法按预期工作: import scala.util.parsing.combinator.PackratParsers import scala.util.parsing.co
我想在 Ubuntu 14.04 64 位上使用 jTSS,我有版本 1.2 的硬件 TPM。我按照 4.3 http://trustedjava.sourceforge.net/index.php?
有人可以向我解释一下为什么要设置吗激活深度似乎没有效果在下面的代码示例中? 此示例创建“ block ”对象,这些对象都具有一个数字和一个子 block 。 由于 ActivationDepth 设置
请帮我找到这个“段错误:11”。 argv 输入看起来不错。顺便说一句,这是一个就餐哲学家问题。它在一小时前工作,但在 minix 机器上,但现在在 Unix 机器上它无法运行。请帮我解决这个愚蠢的错
我的wireup.xml看起来像 和storage//local.properties为 ### === MongoDB interaction === ### host="
我只想在未设置 javascript 对象时设置值。我的(测试)函数如下所示: var test = function(){ this.value = {}; this.setValu
这是我完成的sql命令,我不明白为什么没有 key (〜1.45秒)和有 key (〜1.15秒)之间的差异这么小: mysql> show create table devis; | devis |
我目前正在用 javascript 搞乱浏览器历史记录,我几乎得到了我想要的。 但是我遇到了一个巨大的错误,让我解释一下情况: 我有一个菜单,当按下菜单项时,会执行以下代码: $("#content"
我正在学习如何将 QT 与 Visual Studio 结合使用。目前,我正在使用 QT 5.8 和 vs 2017。我创建了一个新项目并使用 QT 设计器添加了一些单选按钮。现在,我想执行一些操作,
我正在通过这样做来设置导航栏: Home 请注意我去掉了很多元素,因为这会使这个例子太大。 现在,这是我的 CSS: /* GLOBAL
我是一名优秀的程序员,十分优秀!