我正在使用此代码检查未定义的变量,但它不起作用.
var uemail = localStorage.getItem("useremail");
if (typeof uemail === "undefined")
{
alert('undefined');
}
else
{
alert('defined');
}Run Code Online (Sandbox Code Playgroud)
根据JavaScript中null和undefined的区别是什么?,null和undefined是两个不同的对象(具有不同类型的)在Javascript.但是,当我尝试这个代码
var a=null;
var b;
alert(a==null); // expecting true
alert(a==undefined); // expecting false
alert(b==null); // expecting false
alert(b==undefined); // expecting true
Run Code Online (Sandbox Code Playgroud)
上面代码的输出是:
true
true
true
true
Run Code Online (Sandbox Code Playgroud)
现在,作为==唯一匹配的价值,我想这两个undefined和null必须具有相同的价值.所以我尝试过:
alert(null) - >给 null
alert(undefined) - >给 undefined
我不明白这是怎么可能的.
这是演示.
编辑
我明白这===会给出预期的结果,因为undefined它null有不同的类型,但是在Javascript的情况下,类型转换是如何工作的==?我们可以像在Java中那样进行显式类型转换吗?我想上应用手动型转换undefined和null.
为什么isNilLodash 中的方法使用null而不是undefined?
function isNil(value) {
return value == null;
}
Run Code Online (Sandbox Code Playgroud) 变量以空引用开始,例如它可能是以下之一:
const myString = ref();
const myString = ref('');
const myString = ref<string>();
const myString = ref<string | null>();
const myString = ref<string | null>(null);
const myString = ref<string | undefined>();
const myString = ref<string | undefined>(undefined);
const myString = ref<string | null | undefined>();
Run Code Online (Sandbox Code Playgroud)
然后它被赋予一个值:
myString.value = "I am a string";
Run Code Online (Sandbox Code Playgroud)
然后再次为ref 分配一个空值,例如它可能是以下之一:
myString.value = '';
myString.value = null;
myString.value = undefined;
Run Code Online (Sandbox Code Playgroud)
这些的哪种组合最适合在 Vue 3 中使用?
或者也许你会做别的事?
当在野外使用时,我正在寻找与 Vue 3 的最大兼容性、TypeScript 类型安全性以及没有 Eslint 错误。
在MongoDB中,我想使用$ gt和$ lt比较运算符,其值可以为null.当运算符不使用null时,我查找了文档,但没有找到.在这两种情况下,它都没有返回任何文档(即使$ ne,$ gte和$ lte确实返回了文档;这意味着有些文档都等于且不等于null).
我希望$ gt基本上像$ ne一样运行(因为null类型的Mongo comarison命令是如此之低)和$ lt因为同样的原因没有返回任何内容.
我希望这可以工作,因为我传递给查询的值是变量(可能为null),我不想为null编写特殊情况.
鉴于以下集合,我正在考虑的示例:
{
id: 1,
colNum: null
}
{
id: 2,
colNum: 72
}
{
id: 3
}
Run Code Online (Sandbox Code Playgroud)
我希望以下查询:
db.testtable.find( { "colNum" { $gt : null } } )
Run Code Online (Sandbox Code Playgroud)
回来:
{
id: 2,
colNum: 72
}
Run Code Online (Sandbox Code Playgroud)
但是,没有返回任何内容.
是否有一个原因,$ gt和$ lt似乎无法使用null,或者它是MongoDB错误,还是它实际上应该工作并且可能存在用户错误?
我对 Angular 6 有以下错误
<mat-tab-group [(selectedIndex)]="selectedTabIndex">
<mat-tab label="Add">
<ng-template matTabContent>
<form [formGroup]="entityAddFormGroup">
<dynamic-material-form [group]="entityAddFormGroup" [model]="entityAddFormCtlModelArray"></dynamic-material-form>
<button (click)="buttonAddEntityClicked(entityAddFormGroup.value)">Add</button>
</form>
</ng-template>
</mat-tab>
<mat-tab *ngIf="entityEditFormGroup && currentEntity" label="Edit #{{currentEntity.id}}">
<!-- TODO correct bug with -->
<ng-template matTabContent>
<form [formGroup]="entityEditFormGroup">
<!-- <h2 i18n>Edit #{{currentEntity.id}}</h2> -->
<dynamic-material-form [group]="entityEditFormGroup" [model]="entityEditFormCtlModelArray"></dynamic-material-form>
<button (click)="buttonEditEntityClicked(entityEditFormGroup.value)">Save</button>
</form>
</ng-template>
</mat-tab>
</mat-tab-group>
Run Code Online (Sandbox Code Playgroud)
当我删除第二个mat-tab错误消失
进入其他类似的组件,我没有把这2个表格放到一个mat-tab-groupand里mat-tab,也没有这个错误。
花了一段时间发现差异在哪里。
ExpressionChangedAfterItHasBeenCheckedError:检查后表达式已更改。以前的值:'ng-valid:true'。当前值:'ng-valid:false'。
Angular CLI: 6.2.8
Node: 11.9.0
OS: linux x64
Angular:
Run Code Online (Sandbox Code Playgroud)
public displayedColumnsArray = …Run Code Online (Sandbox Code Playgroud) 我有一个带有onclick事件的纯Javascript脚本,它会在决定做什么之前检查下一个兄弟的值.如果单击的元素是其容器中的最后一个元素(因为访问nextSibling),这将导致错误.我需要先检查点击的元素不是容器中的最后一个元素,但似乎无法找出方法.
注意:我不认为这是重复的.有很多关于检查元素是否是最后一个子元素的问题,但是所有已接受的答案 - 一般使用JQuery中的所有答案.
为什么JavaScript函数undefined默认返回而不是返回null?规范中这是一个完全任意的选择,还是存在一个更大的ECMAScript行为上下文,可以在其中理解这个特定选择?
function a() {}
a();
// undefined
Run Code Online (Sandbox Code Playgroud)
null和之间有什么区别undefined?是否存在基于规范的原因,为什么它undefined更适合用作默认返回值,或者是一个任意选择?
我想知道typescript中null和undefined的区别.我知道在javascript中可以使用它们来检查变量没有值.但是在打字稿中,我想要准确地了解它们之间的区别,以及何时更好地使用它们.谢谢.
为什么javascript有null和undefined?它们似乎都意味着相同的事情,there's nothing here而且它们都应该是错误的。但这也意味着,例如,如果我要检查,如果事情存在,但它可能是{},[],0或其他一些falsey件事我必须检查
if(thing !== undefined && thing !== null)
Run Code Online (Sandbox Code Playgroud)
另外,我知道那typeof null是Object但是typeof {}也是Object同时typeof undefined也是"undefined"但是
const nullVariable = null;
console.log(nullVariable.x) // => error
const emptyVariable = {};
console.log(emptyVariable.x) // => undefined
const undefinedVariable;
console.log(undefinedVariable.x) // => error
Run Code Online (Sandbox Code Playgroud)
此外,undefined应该意味着尚未声明该变量,但您可以声明一个变量,如
const undefinedVariable = undefined;
Run Code Online (Sandbox Code Playgroud)
所以它已被定义但尚未被定义?
所以我要说的是虽然它们有不同的语义含义,一个表示一个尚未声明的变量,一个表示一个没有值的变量,它们似乎具有功能,但它们都是假的,试图获得一个属性形式他们会返回一个错误。
基本上我要问的是为什么我们需要两者,为什么不只使用像 pythonNone这样的语言或像 java 和 c++ 这样的低级语言Null?
javascript ×6
typescript ×3
null ×2
angular ×1
function ×1
lodash ×1
mongodb ×1
spring ×1
spring-mongo ×1
undefined ×1
vue.js ×1
vuejs3 ×1