javascript中的变量范围是什么?它们的内部是否与函数外部相同?或者甚至重要吗?另外,如果变量是全局定义的,那么它们存储在哪里?
在网上搜索异步函数,我发现很多文章使用setTimeout来完成这项工作:
window.setTimeout(function() {
console.log("second");
}, 0);
console.log("first");
Run Code Online (Sandbox Code Playgroud)
输出:
first
second
Run Code Online (Sandbox Code Playgroud)
这有效,但是最佳做法?
有人可以"逐步","逐行"解释这段代码吗?我想了解更多关于Asynch代码以及Google如何加载他们的脚本,如何从用户"隐藏"javascrippt(我知道我无法隐藏它但至少让它像Google那样,不显示所有代码)一个档案)
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-xxxxxxxx-x', 'xxxxxx.com');
ga('send', 'pageview');
</script>
Run Code Online (Sandbox Code Playgroud) 更新(2013年7月5日):
自从我最初提出这个问题以来,我学到了很多东西.在下面的一条评论中,有人建议我重新处理任务并找到解决问题的方法,而不会有阻止UI的风险.我说这是不可能的,函数必须按原样运行.我实际上并不记得我试图通过该功能完成的任务,但我确信评论者是对的,我错了.如果您偶然发现这个问题并且处于与我相似的情况,那么请认真考虑您的方法存在缺陷的可能性.
您可能还想查看Web工作者.
原始问题:
我不会过于具体地解决我的问题,而是保持这种通用性,以便其他偶然发现它的人可以发现它很有用.
我有一个函数接受一个参数,一个字符串.如果字符串很短,则函数运行正常并及时完成.但是,如果传入的字符串太长,脚本会运行一段时间,那么最终会超时并返回浏览器的慢脚本对话框,允许用户终止脚本.
我想防止这种情况发生,所以脚本可以继续到它的终点.
如何才能做到这一点?
旁注:如果我能够正常工作,我还想创建一个状态栏,类似于加载gmail时看到的状态栏,这样用户就知道事情正在发生.
谢谢!
我正在构建Angular/Express应用程序,我使用控制器加载数据并尝试使用函数中的数据但是我在控制台中出错
无法读取未定义的属性'toLowerCase'
当我手动编写JSON数据时,它工作得很好.任何人都有这个错误,为什么会这样?
编辑:此外,我希望函数在点击时工作,当我想要它不在它加载时,我也使用listData视图中的数据所以我知道它已加载
调节器
var self = this;
self.listData = [];
var self = this;
self.listData = [];
$http.get('/myList')
.success(function (data) {
self.listData = data;
console.log(data);
})
.error(function (data) {
console.log('Error: ' + data);
});
self.myFunc = function(){
var map = self.listData.reduce(function (p, c) {
p.set(c.name.toLowerCase(), c.surname);
return p;
}, new Map());
console.log(...map);
}
Run Code Online (Sandbox Code Playgroud) 我有以下代码获取IP地址我想存储具有全局范围的data.ip,我可以访问文件中的任何位置.
<script>
ip = null;
$.getJSON("http://jsonip.appspot.com?callback=?",
function(data){
ip = data.ip;
alert(ip); //return ip address correctly
});
alert(ip); //undefined or null
</script>
Run Code Online (Sandbox Code Playgroud)