小编Mai*_*pal的帖子

Javascript对象标识

JavaScript中的对象具有唯一的标识.通过表达式(如构造函数或文字)创建的每个对象都被视为与其他所有对象不同.

这背后的原因是什么?

{}==={}//output:false
Run Code Online (Sandbox Code Playgroud)

为什么他们被区别对待?是什么让他们彼此不同?

javascript

4
推荐指数
2
解决办法
5106
查看次数

什么时候可以在JavaScript中使用==?

来自:http://www.2ality.com/2011/12/strict-equality-exemptions.html

JavaScript有两个运算符用于确定两个值是否相等:

  • 严格相等运算符===只考虑具有相同类型的相等值.
  • "正常"(或宽松)等式运算符==在比较严格相等之前尝试转换不同类型的值.

给初学者的建议是完全忘记==并始终使用===.

但是因为没有使用==运算符而导致它的原因是什么?它会导致安全风险吗?

但是使用typeof运算符我们可以确定结果将是一个字符串.然后==可以安全使用,因为我们可以确定它不会执行任何转换恶作剧:

if (typeof x == "function") {
    ...
}
Run Code Online (Sandbox Code Playgroud)

javascript equality operators

3
推荐指数
2
解决办法
548
查看次数

Array.length与Array.prototype.length

我发现Array对象Array.prototype都有length属性.我对使用该Array.length属性感到困惑.你如何使用它?

Console.log(Object.getOwnpropertyNames(Array));//As per Internet Explorer
Run Code Online (Sandbox Code Playgroud)

输出:

length,arguments,caller,prototype,isArray,
Run Code Online (Sandbox Code Playgroud)

Prototype并且isArray可以使用,但你如何使用该length属性?

javascript arrays

3
推荐指数
1
解决办法
1472
查看次数

使用增量运算符和document.write函数

众所周知:

i ++ - >首先使用i然后递增它的值

++ i - >先增加i,然后使用i的新值

但在下面的代码中有些不同

var n=5;
for(i=n;i>=1;--i)
{
   console.log(i);//output:5 why?
    for(j=1;j<=n;++j)
    {
       document.write(j);
    }
document.write("\n");
}
Run Code Online (Sandbox Code Playgroud)

即使我们使用precrement运算符,为什么vaule在第一个循环上输出5?另外我们在完成innerLoop之后使用了新行但它没有显示出来.这背后的原因是什么呢?是不是每个循环上的becoz document.write()运行document.open()函数?如果是的话,其中上下文|| 条件将document.write运行document.open()函数?

javascript

0
推荐指数
1
解决办法
129
查看次数

Object.prototype.valueOf()方法

Object.prototype.valueOf.call("abc")
{ '0': 'a'
, '1': 'b'
, '2': 'c'
}
Object.prototype.valueOf.call(new String("abc"))
{ '0': 'a'
, '1': 'b'
, '2': 'c'
}
Run Code Online (Sandbox Code Playgroud)

根据MDN,JavaScript调用valueOf方法将对象转换为原始值.如果对象没有原始值,则valueOf返回对象本身,显示为: [object Object] 但是valueOf以不同的格式返回而不是返回原语.是 { '0': 'a' , '1': 'b' , '2': 'c' }不是它违反了定义?为什么它以那种格式返回.现在,这造成了混乱.如何知道如果为数组和其他调用Object.prototype.valueOf.call(array)将返回什么对象.

此外,为什么返回对象表单{}.valueOf()会显示,因为[].valueOf()记录时从方法返回 什么也不显示

javascript

0
推荐指数
1
解决办法
1322
查看次数

javascript函数内部范围

请考虑以下代码:

function nepaliBuddha() {
    var a = 20;

    return function buddhaNepal() {
        console.log(a); 
    }
}

var closure = nepaliBuddha();

closure(); // logs 20
Run Code Online (Sandbox Code Playgroud)
  1. 现在当我们调用closure输出时20.这证明了内部范围property([[scope]])被分配给定义它的内部函数或声明时声明.如果没有在声明中分配,则无法记录20,因为它在不同的上下文中被调用

  2. 调用closure()函数上下文的作用域链是在函数调用时创建的,它由当前上下文的激活对象或VO以及[[scope]]此函数的内部属性组成.

  3. 调用还会创建[[scope]]属性,这意味着内部范围属性是在声明时创建的,也不是在执行时创建的?

  4. 通常,定义表示[[scope]]属性是在运行时或函数调用时创建的,但这不是真的,因为[[scope]]属性已经在声明中分配.

  5. 我认为[[scope]]属性可能会在执行函数后得到更新,是吗?请明确[[scope]]内部属性的定义.如何以及何时在申报时或执行时或两次创建.

javascript

0
推荐指数
1
解决办法
2241
查看次数

什么在.each()方法中返回false?怎么能阻止循环呢?

$("button").click(function () {
    $("div").each(function (index, domEle) {
        // domEle == this
        $(domEle).css("backgroundColor", "yellow");
        if($(this).is("#stop")) {
            $("span").text("Stopped at div index #" + index);
            return false;
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

方法中return false需要做什么.each()

javascript jquery

-4
推荐指数
2
解决办法
6330
查看次数

标签 统计

javascript ×7

arrays ×1

equality ×1

jquery ×1

operators ×1