JavaScript中是否有任何"not in"运算符来检查对象中是否存在属性?我无法在Google或SO周围找到任何相关信息.这是我正在处理的一小段代码,我需要这种功能:
var tutorTimes = {};
$(checked).each(function(idx){
id = $(this).attr('class');
if(id in tutorTimes){}
else{
//Rest of my logic will go here
}
});
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我会把所有内容都放在else语句中.我只是为了使用else部分来设置if/else语句似乎是错的...
注意:根据ECMAScript5.1,第15.1.1.3节,window.undefined是只读的.
当我最近将Facebook Connect与Tersus集成时,我最初收到错误消息,Invalid Enumeration Value并Handler already exists在尝试调用Facebook API函数时.
事实证明,问题的原因是
object.x === undefined
Run Code Online (Sandbox Code Playgroud)
当'object'中没有属性'x'时返回false.
我通过在两个Facebook函数中用常规相等替换严格相等来解决这个问题:
FB.Sys.isUndefined = function(o) { return o == undefined;};
FB.Sys.containsKey = function(d, key) { return d[key] != undefined;};
Run Code Online (Sandbox Code Playgroud)
这使得事情对我有用,但似乎暗示了Facebook的JavaScript代码和我自己的代码之间的某种冲突.
什么可能导致这个?
提示:这是有据可查的undefined == null同时undefined !== null.这不是问题.问题是我们如何得到undefined !== undefined.
这一行在下面做了什么?
undefined = 'A value';
Run Code Online (Sandbox Code Playgroud)
如果它没有改变undefined那么幕后会发生什么的价值呢?
鉴于:
console.log(boo); this outputs undefined
Run Code Online (Sandbox Code Playgroud)
鉴于:
var boo = 1;
console.log(boo); this outputs 1
Run Code Online (Sandbox Code Playgroud)
在定义boo并设置为1后,如何重置boo,以便console.log输出undefined?
谢谢
我最近一直在为很多项目使用Knockout.js,我正在编写大量重复的代码.我希望能够定义一个BaseViewModel类,并让我的页面特定的ViewModel继承它.我有点困惑,如何做到这一点是Javascript.这是我的基本内容BaseViewModel:
(function (ko, undefined) {
ko.BaseViewModel = function () {
var self = this;
self.items = ko.observable([]);
self.newItem = {};
self.dirtyItems = ko.computed(function () {
return self.items().filter(function (item) {
return item.dirtyFlag.isDirty();
});
});
self.isDirty = ko.computed(function () {
return self.dirtyItems().length > 0;
});
self.load = function () { }
};
}(ko));
Run Code Online (Sandbox Code Playgroud)
我希望能够列出签名等的方法load中BaseViewModel,然后让他们在继承视图模型的定义.这有可能吗?我在网上找到了一些解决方案,但它们都依赖于定义函数/类来使继承工作.
; (function ($, undefined)
{
// all the variables and functions of the js document
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
我现在已经在jquery/javascript文件中看到过两次这样的缩放脚本.我不明白这究竟是什么.我似乎无法谷歌它,我不记得在最近学习jquery和js时在tizag或w3schools上遇到过这个问题.
此代码之前或之后没有任何内容(除了一些注释).所以我完全迷失了什么(function())(jQuery);是或做了什么.
喜欢
function myFunction(){
var undefined = "abc";
}
Run Code Online (Sandbox Code Playgroud)
如果它可能那么如何限制不允许?
对于undefined,这个测试有什么问题吗?
var undefined;
if(x == undefined){
//do something
}
Run Code Online (Sandbox Code Playgroud)
或这个:
function undefined(x){
return typeof x == 'undefined';
}
if(undefined(x)){
//do something
}
Run Code Online (Sandbox Code Playgroud)
jsLint不会抛出一个保留字的错误,但代码似乎仍然有效......
鉴于此功能:
var test = function(param1, param2_maybe_not_set) {
var my_object = {};
// code here...
}
Run Code Online (Sandbox Code Playgroud)
在您看来,最好的是什么?
my_object.new_key = (param2_maybe_not_set === undefined) ? null : param2_maybe_not_set;
Run Code Online (Sandbox Code Playgroud)
要么
my_object.new_key = (param2_maybe_not_set === void 0) ? null : param2_maybe_not_set;
Run Code Online (Sandbox Code Playgroud)
要么
my_object.new_key = (typeof param2_maybe_not_set === 'undefined') ? null : param2_maybe_not_set;
Run Code Online (Sandbox Code Playgroud)
或者,这个缩短的表达式是否正确?
my_object.new_key = param2_maybe_not_set || null;
Run Code Online (Sandbox Code Playgroud)
所有四种方法都有效(至少在NodeJS控制台中).jsPerf也没有显示出任何这些差距(http://jsperf.com/typeof-performance/8)
应该使用哪一种,作为一种良好做法?
我正在使用 TypeScript 声明以下变量:
const BOT_PREFIX: string = process.env.PREFIX;
const BOT_TOKEN: string = process.env.TOKEN;
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
输入'字符串| undefined' 不能分配给类型 'string'。类型 'undefined' 不可分配给类型 'string'.ts(2322)
我可以通过将数据类型更改为 来修复它any,但我不想这样做。
javascript ×10
object ×2
undefined ×2
discord.js ×1
inheritance ×1
jquery ×1
knockout.js ×1
node.js ×1
operators ×1
properties ×1
prototype ×1
typescript ×1