小编Bad*_*bra的帖子

为什么让set和var绑定使用setTimeout函数表现不同?

此代码记录66次:

(function timer() {
  for (var i=0; i<=5; i++) {
    setTimeout(function clog() {console.log(i)}, i*1000);
  }
})();
Run Code Online (Sandbox Code Playgroud)

但是这段代码......

(function timer() {
  for (let i=0; i<=5; i++) {
    setTimeout(function clog() {console.log(i)}, i*1000);
  }
})();
Run Code Online (Sandbox Code Playgroud)

...记录以下结果:

0
1
2
3
4
5
Run Code Online (Sandbox Code Playgroud)

为什么?

是因为不同地let绑定到内部范围每个项目并var保持最新值i

javascript var let

45
推荐指数
2
解决办法
7477
查看次数

如何使用AngularJS上传文件?

我正在尝试使用AngularJS上传文件.这是我的代码:

HTML

<input type="file" file-model="myFile"/>
<button ng-click="uploadFile()">upload me</button>
Run Code Online (Sandbox Code Playgroud)

JavaScript的

$scope.uploadFile = function(){
    var file = $scope.myFile;
    var uploadUrl = "http://admin.localhost/images/patanjali/";
    VariantService.uploadFileToUrl(file, uploadUrl);
};

VariantService.uploadFileToUrl = function(file, uploadUrl){
    var fd = new FormData();
    fd.append('file', file);
    $http.post(uploadUrl, fd, {
        transformRequest: angular.identity,
        headers: {'Content-Type': undefined}
    })
    .success(function(){
        alert ('success');
    })
    .error(function(){
    });
}
Run Code Online (Sandbox Code Playgroud)

虽然我可以在我的服务中看到("成功")警报,但该文件未保存在控制器中提供的位置.

有人能帮我吗?缺什么?

javascript file-upload angularjs

20
推荐指数
2
解决办法
4637
查看次数

JavaScript的分组操作符如何工作?

JavaScript的分组操作符如何工作?

1 + 2;
(1 + 2);

function(){ return 1} + "text";  // SyntaxError
(function(){return 1} + "text");
Run Code Online (Sandbox Code Playgroud)

鉴于上述代码,我有以下问题:

  1. 为什么1 + 2;没有语法错误,而function(){ return 1} + "text"引发SyntaxError?
  2. 分组操作符如何(function(){return 1} + "text")修复语法错误?

javascript

17
推荐指数
2
解决办法
1690
查看次数

JavaScript中的单例模式

下面是一个非常流行的JavaScript Singleton模式实现的示例:

var mySingleton = (function() {
    var instance;

    function init() {
        function privateMethod() {
            console.log("I am private");
        }
        var privateVariable = "Im also private";
        var privateRandomNumber = Math.random();
        return {
            publicMethod: function() {
                console.log("The public can see me!");
            },
            publicProperty: "I am also public",
            getRandomNumber: function() {
                return privateRandomNumber;
            }
        };
    };

    return {
        getInstance: function() {
            if (!instance) {
                instance = init();
            }
            return instance;
        }
    };
})();
Run Code Online (Sandbox Code Playgroud)

我已经考虑了一段时间,当我们用这个简单的代码实现相同的结果时,我并不真正理解这种复杂性的需要:

singleton = (function() {
    var obj = {
        someMethod: …
Run Code Online (Sandbox Code Playgroud)

javascript singleton design-patterns gang-of-four

14
推荐指数
1
解决办法
2767
查看次数

在数组元素之间插入对象的最优雅方法是什么?

我确信有很多方法可以实现这一目标,但我正在寻找"优雅"的东西.

a = [
  'a',
  'b',
  'c'
];

magicArrayJoin(a, {value: 255} ); // insert the same object between each item

result ==  [
  'a',
  {value: 255},
  'b',
  {value: 255}
  'c'
];
Run Code Online (Sandbox Code Playgroud)

欢迎所有提案.:)

javascript arrays

13
推荐指数
6
解决办法
7998
查看次数

如何在ES6中将长导入语句分成多行?

我在JavaScript(ES6)文件中有一个很长的import语句:

import { A, B, C, D } from '../path/to/my/module/in/very/far/directory/'
Run Code Online (Sandbox Code Playgroud)

可以添加这样的新行吗?

import { A, B, C, D } from
'../path/to/my/module/in/very/far/directory'
Run Code Online (Sandbox Code Playgroud)

如果没有,是否还有其他方法可以使用Babel编写干净(保持我的代码在80列内)使用ES6语法导入语句?

javascript ecmascript-6

11
推荐指数
2
解决办法
5471
查看次数

如何使用对象解构处理嵌套的默认参数?

我试图弄清楚是否有可能通过解构处理多个级别的默认参数.由于用文字解释起来并不容易,这是一个循序渐进的例子......


1 - 使用默认参数进行扁平对象解构

解构这个对象很简单:

let obj = {
  foo: 'Foo',
  bar: 'Bar'
};
Run Code Online (Sandbox Code Playgroud)

随着{foo = 'Foo', bar = 'Bar'} = {}在函数签名,如果没有当函数被调用时传入的参数的对象将被创建.如果传递了一个对象但是引用了一些属性undefined,则它们将被默认值替换.这段代码工作正常:

function fn1({foo = 'Foo', bar = 'Bar'} = {}) {
  console.log(foo, bar);
}

// OK
fn1(); // Foo Bar
fn1({foo: 'Quux'}); // Quux Bar
fn1({bar: 'Quux'}); // Foo Quux
fn1({foo: 'Quux', bar: 'Quux'}); // Quux Quux
Run Code Online (Sandbox Code Playgroud)

2 - 使用浅默认参数的嵌套对象解构

解构这个对象更难:

let obj = {
  foo: 'Foo',
  bar: {
    quux: 'Quux',
    corge: 'Corge'
  }
}; …
Run Code Online (Sandbox Code Playgroud)

javascript function destructuring default-parameters ecmascript-6

9
推荐指数
1
解决办法
1049
查看次数

使用JavaScript/jQuery的后退按钮

我有两个相同的HTML页面(index.htmlpage1.html),它们包含两个按钮:

<ul data-role="listview" data-inset="true" class="ui-listview ui-listview-inset ui-corner-all ui-shadow">
    <li class="ui-body ui-body-b ui-li-static ui-body-inherit ui-last-child">
        <fieldset class="ui-grid-a">
            <div class="ui-block-a">
                <button id="submit" type="submit" class="ui-btn ui-btn-a ui-corner-all">Submit</button>
            </div>
            <div class="ui-block-b">
                <button id="cancel" data-direction="reverse" type="submit" class="ui-btn ui-btn-a ui-corner-all">Cancel</button>
            </div>
        </fieldset>
    </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

其中一个按钮更改为第二个页面,第二个按钮就像一个后退按钮.(理想情况下,您可以使用第一个按钮进入第二页,然后使用第二页上的后退按钮返回第一页.)

我使用JavaScript控制它(这仅适用于index.html按钮,但page1.html JS是相同的):

$(document).on('click', '#submit', function() {
    $(":mobile-pagecontainer").pagecontainer("change", "page1.html",  {
        transition: 'slide',       
        changeHash: true
    });
});

$(document).on('click', '#cancel', function() {
    parent.history.back();
    //$.mobile.back();
});
Run Code Online (Sandbox Code Playgroud)

但我尝试的任何东西似乎都没有用.我知道该程序到达了parent.history.back();因为我在控制台中设置了断点,但除此之外我不知道为什么它不会返回到第一页.

javascript jquery

8
推荐指数
1
解决办法
2万
查看次数

如何使用Maven创建纯JavaScript项目?

我想使用Maven创建单页webapp前端.

我的目标非常简单:我有一些表示为webjars的依赖,我希望能够从我的HTML页面引用它们.

我也希望通过简单的HTTP服务器提供服务.

最好的方法是什么?

javascript maven

7
推荐指数
1
解决办法
5531
查看次数

JavaScript正则表达式 - 如何用标签包装匹配?

我在JavaScript中有一个字符串,我想在其中找到给定短语的所有匹配项并用标记包装它们.我无法在这里找到正确的正则表达式方法来替换不区分大小写的短语,并用它周围的附加文本替换它自己.例如:

输入字符串:

"I like to play with cats, as does Cathy, who is a member of ACATA, which is the American Cat And Tiger Association."
Run Code Online (Sandbox Code Playgroud)

不区分大小写的短语:"cat"

输出字符串:

"I like to play with <em>cat</em>s, as does <em>Cat</em>hy, who is a member of A<em>CAT</em>A, which is the American <em>Cat</em> And Tiger Association."
Run Code Online (Sandbox Code Playgroud)

所以,基本上,注入<em></em>任何比赛.我不能只做一个直接替换,因为我将丢失输入字符串中的原始情况.

javascript regex

7
推荐指数
3
解决办法
4438
查看次数