此代码记录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?
我正在尝试使用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的分组操作符如何工作?
1 + 2;
(1 + 2);
function(){ return 1} + "text"; // SyntaxError
(function(){return 1} + "text");
Run Code Online (Sandbox Code Playgroud)
鉴于上述代码,我有以下问题:
1 + 2;没有语法错误,而function(){ return 1} + "text"引发SyntaxError?(function(){return 1} + "text")修复语法错误?下面是一个非常流行的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) 我确信有很多方法可以实现这一目标,但我正在寻找"优雅"的东西.
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(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语法导入语句?
我试图弄清楚是否有可能通过解构处理多个级别的默认参数.由于用文字解释起来并不容易,这是一个循序渐进的例子......
解构这个对象很简单:
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 QuuxRun Code Online (Sandbox Code Playgroud)
解构这个对象更难:
let obj = {
foo: 'Foo',
bar: {
quux: 'Quux',
corge: 'Corge'
}
}; …Run Code Online (Sandbox Code Playgroud) javascript function destructuring default-parameters ecmascript-6
我有两个相同的HTML页面(index.html和page1.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中有一个字符串,我想在其中找到给定短语的所有匹配项并用标记包装它们.我无法在这里找到正确的正则表达式方法来替换不区分大小写的短语,并用它周围的附加文本替换它自己.例如:
输入字符串:
"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 ×10
ecmascript-6 ×2
angularjs ×1
arrays ×1
file-upload ×1
function ×1
gang-of-four ×1
jquery ×1
let ×1
maven ×1
regex ×1
singleton ×1
var ×1