我希望人们能原谅我一个相当基本的JavaScript问题(对于我来说,它通常不是一种“主要”语言)。我查看了W3学校的JavaScript教程,以供参考;它们的有以下警告和代码示例:
警告:添加具有高索引的元素可能会在数组中创建未定义的“洞”:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits[6] = "Lemon"; // adds a new element (Lemon) to fruits
这将导致索引4和5包含undefine
任何提供数组(列表、向量、元组等)的编程语言。必须决定它们是否具有引用语义或值语义,通常/明显的选择是可变数组的引用语义和不可变数组的值语义。
提供可变数组的JavaScript似乎选择了引用语义,例如给定
var a = [1, 2, 3]
var b = [1, 2, 3]
然后是a != b,不出所料,因为虽然它们具有相同的内容,但它们是不同的数组。
但是,当您将它们用作对象中的关键点时,图片会发生变化;如果将obj[a]设置为某个值,则obj[b]将获得相同的值。此外,如果您更改了数组的内容,这仍然是正确的;至少当我在Rhino中测试它时,它的行为就像解释器在每次查找时递归地比较所提供
我正在用JavaScript创建一个基本的保龄球计分程序。为此,到目前为止,我已经创建了不同的函数Frame和Game。我已经创建了一个框架替身来测试我的游戏功能。我遇到问题的测试是这样的:
it('can take a frame as a parameter', function(){
frame.frameOne.and.callFake(function(){
[5, 5, 'spare'];
});
expect(game.frame1(frame)).toBe([5, 5, 'spare']);
});`
它测试的游戏逻辑是这
下面是一个小JavaScript片段:
var re_words = /\w+/g;
var words;
while (words = re_words.exec(' here are a few (sic!) words ')) {
alert(words);
}
循环会提醒输入字符串中的单词,这正是我所期望的,因为所有的JavaScript教程都告诉我这一点。
现在,类型(Words)导致对象。
因此,我希望警报(Words)给我对象。
如果我用文字检查元素,我发现它们是0、“索引”和“输入”。元素词与使用单词时发出警告的内容相同。
因此,问题
我对我一直在做的一个函数有个问题。此函数的目的是获取两组文本输入框中的日期,计算两组文本输入框之间的差异,然后将天数放入第三组框中。我的函数如下所示。
function daysBetween() {
for (var i = 0; i < 8; i++) {
//Get the value of the current form elements
var start = namestart[i];
var end = namend[i];
var out = names[i];
//Duration of a day
var d = 1000
JavaScript在数组和对象与之间有一个
var a = []; // empty array, right?
a.foo = 'bar'; // a is also an object
问题是,在检查Chrome DevTools控制台中的变量时,a似乎只是一个空数组:
这种数组/对象的使用是在中发生的,因此我正在寻找一种方法来显示在Chrome DevTools中显示变量的所有属性。
我在Javascript中有两个类A和B,A扩展了B,它们的构造函数中都有一个同名的属性。
我试图从B类访问属性name的值,但是当从A创建一个新对象时,它被A替换为A。
class B {
constructor(){
this.name = "I AM B"
}
speakB(){
return this.name
}
}
class A extends B {
constructor(){
super()
this.name = "I AM A"
}
speakA(){
因此,对于选中的每个复选框,我将获得相关的id,并根据那里的值推断节点值,该值工作良好。我面临的问题是创建一个正确的javascript对象,其中包含来自所有复选框的值。
这是函数,
function finlizeJParams()
{
var jsonOutput=[];
var array = $("input[type='checkbox']:checked").map(function(){
今天,在维护同事代码期间,我第一次(或第一次注意到了这一点)。
从本质上讲,“怪异”部分与您试图运行以下代码时相同:
var arr = [];
arr[0] = "cat"; // this adds to the array
arr[1] = "mouse"; // this adds to the array
arr.length; // returns 2
arr["favoriteFood"] = "pizza"; // this DOES NOT add to the array. Setting a string
杰森:
[{"Name":"David Smith","ClaimNum":"123456789","Site":"SomeSite","ServiceDate":"2013-02-27","Program":"3","ServiceType":"168","ReportType":"ReportTypeHere","program":"Some P
我以为我对JavaScript相当了解,直到我遇到其他开发人员的代码,把我打倒在地:
var data = [];
从它的名字可以看出,它应该用作一个关联数组(即Object),但它是一个Array。然后他为该数组的键赋值:
data['somekey'] = 'somevalue';
我认为这在JavaScript中是不可能的,我认为它会抛出一个异常,但它是有效的。为什么它会起作用?如果我们可以使用数组,那么为什么我们还需要对象呢?这被认为是一种糟糕的做法吗?我应该羞辱那个开发人员吗?
我习惯了python,所以
a = [1,2,3]
1 in a # -> True
b = ["1", "2", "3", "x"]
"x" in b # -> True
为什么是在JavaScript中?
a = [1,2,3]
1 in a // -> true
b = ["1", "2", "3", "x"]
"x" in b // -> false
更奇怪的是
"1" in b // -