我写这篇文章的时候, ECMAScript 5已经在最后的草稿中了。 这是由于包含一个严格的模式,这将阻止您分配给全局对象,使用eval和其他限制。 ( John Resig的文章是一个很好的介绍。) 通过在文件(或函数)的顶部包含string“use strict”,可以触发这种神奇的理智保存模式。但是,在较老的环境中,“use strict”是无效的。 如果在严格的环境中添加“严格使用”,而不是在严格的环境下进行testing,那么您可能会留下一个不真正严格的代码的时间炸弹,这个代码在真正达到严格的环境时会被破坏。 哪个环境真的尊重“严格使用”?
我一直在想这个,但是我一直没有find任何关于它的事情。 当使用seq函数时,它是如何真正起作用的? 在任何地方,只是解释说seq ab评估a ,丢弃结果并返回b 。 但是这到底意味着什么呢? 以下会导致严格的评估: foo st = seq q (bar qt) where q = s*t 我的意思是,在使用bar之前是否严格评估? 以下是相同的: foo st = seq (s*t) (bar (s*t) t) 我觉得这个function的function有点难。
ECMAScript5中严格模式编译指示的范围是什么? "use strict"; 我想这样做(主要是因为JSLint没有抱怨): "use strict"; (function () { // my stuff here… }()); 但我不确定是否会破坏其他代码。 我知道,我可以做到这一点,这将编译范围的function… (function () { "use strict"; // my stuff here… }()); 但JSLint抱怨(当“strict”JSLint选项被启用时),因为它认为你在启用“use strict”之前执行的代码。 这是我的问题。 如果我有fileA.js: "use strict"; // do some stuff 和fileB.js: eval( somecodesnippet ); // disallowed by "use strict" 然后按照相同的顺序将它们包含在我的html页面中,这个编译指示是否会被限制到文件中,或者这个编译指示是否会stream入到fileB中,从而阻止了eval的执行?
我正在学习Perl和Python … …在同一时间,不是我的devise,但它必须完成。 题: 在我使用的Perl脚本(见下文)在我的TXT的头部。 #!/usr/bin/env perl use strict; use warnings; 有没有什么我应该为我的Python脚本日常工作?
遇到麻烦得到以下通过jslint / jshint /*jshint strict: true */ var myModule = (function() { "use strict"; var privVar = true, pubVar = false; function privFn() { return this.test; // -> Strict violation. } function pubFn() { this.test = 'public'; // -> Strict violation. privFn.call(this); // -> Strict violation. } return { pubVar: pubVar, pubFn: pubFn }; }()); […]
我们都知道(或者应该知道)Haskell默认是懒惰的。 评估之前,没有任何评估。 那么什么时候必须进行评估? 有几点Haskell必须严格。 我称之为“严格点”,虽然这个特定的术语并不像我想象的那样广泛。 据我所知: Haskell中的减less(或评估) 只发生在严格点上。 所以问题是: Haskell的严格性究竟是什么? 我的直觉说main seq / bang模式,模式匹配,以及通过main执行的任何IO动作都是主要的严格点,但是我不知道为什么我知道这一点。 (另外,如果他们不被称为“严格点”,他们叫什么?) 我想象一个好的答案将包括一些关于WHNF的讨论等等。 我也想象它可能会触及lambda演算。 编辑:关于这个问题的其他想法。 正如我在这个问题上所反映的那样,我认为在严格点的定义中增加一些内容会更清楚些。 严格点可以有不同的背景和不同的深度 (或严格性)。 回到我的定义:“减lessHaskell只发生在严格点上”,让我们在这个定义中增加这样一个条款:“一个严格点只有当它的周围环境被评估或减less时才会触发”。 所以,让我试着让你开始我想要的答案。 main是一个严格点。 它被特别指定为其上下文的主要严格点:程序。 当程序( main的上下文)被评估时,main的严格点被激活。 主要的深度是最大的:它必须充分评估。 主要通常由IO操作组成,这些操作也是严格点,其上下文是main 。 现在您尝试:以这些术语讨论seq和模式匹配。 解释function应用的细微差别:它是如何严格的? 它怎么样? 那么deepseq呢? let和case陈述? unsafePerformIO ? Debug.Trace ? 顶级定义? 严格的数据types? 爆炸模式? 等等这些项目中有多less可以用seq或模式匹配来描述?
我认为这可能是严重违规使用这个关键字和揭示模块模式的副本 我有这个代码: function gotoPage(s){ if(s<=this.d&&s>0){this.g=s; this.page((s-1)*this.p.size);} } function pageChange(event, sorter) { var dd = event.currentTarget; gotoPage.call(sorter, dd[dd.selectedIndex].value); } 和JSHINT(JSLINT)抱怨。 它说“严格违规”。 突出显示的行: 是我使用Function.call()然后引用实例,不知何故不合适? 这被认为是不好的风格?
我试图在for循环中使用break语句,但由于我在我的Perl代码中也使用了严格的subs,所以我得到一个错误: 在./final.pl第154行使用“strict subs”时不允许使用Bareword“break”。 有没有解决这个(除了禁用严格的潜艇)? 我的代码格式如下: for my $entry (@array){ if ($string eq "text"){ break; } }
我曾尝试使用multi_query,但我不断得到一个严格的标准消息popup。 $querystring = "INSERT INTO responses VALUES('1', '2', '3', '4'); INSERT INTO responses VALUES('1', '2', '3', '4')"; if (mysqli_multi_query($db, $querystring)) { do { if ($result = mysqli_store_result($db)) { // } } while (mysqli_next_result($db)); } echo "end"; 我得到的错误消息是: 严格标准 :mysqli_next_result():没有下一个结果集。 请调用mysqli_more_results()/ mysqli :: more_results()来检查是否调用这个函数/方法 我试过添加和删除-; 但没有运气。
$el = array_shift($instance->find(..)) 上面的代码以某种方式报告严格的标准警告,但是这不会: function get_arr(){ return array(1,2); } $el = array_shift(get_arr()); 那么它何时会报告警告呢?