草庐IT

javascript - 为什么在 Javascript 严格模式下不允许删除?

我是javascript的新手。我注意到显然在“使用严格”模式下操作时,您无法删除对象。我不太喜欢删除内容(因为从理论上讲,作用域无论如何都应该处理这个问题),但我想知道删除此功能背后的动机是什么? 最佳答案 delete语句在严格模式下仍然是允许的,但是它的某些特定用法是错误的。它只允许用于对象属性,而不是简单的名称,并且只允许用于可以删除的对象属性。因此vara={x:0};deletea.x;很好,但是deleteObject.prototype;不是,也不是deletea;(后者实际上是语法级错误,而试图删除不可删除的属性是

javascript - 严格模式下的间接 eval 调用

我了解eval()在非严格上下文中的工作方式,但是在严格模式下使用eval()的情况让我完全困惑。当在全局范围内直接调用eval()时,变量将保留在新的eval()范围内:'usestrict';eval('vara=1;');console.log(a);//ReferenceError:aisnotdefined但是,如果我在全局范围内执行对eval()的间接调用(应该是同一件事,对吧?),它的行为就像是不是严格模式(如果你不相信我,请参阅thisJSFiddle):'usestrict';(0,eval)('vara=1;');//indirectcalltoevalconsol

javascript - 严格违反使用此关键字和揭示模块模式

无法让以下内容通过jslint/jshint/*jshintstrict:true*/varmyModule=(function(){"usestrict";varprivVar=true,pubVar=false;functionprivFn(){returnthis.test;//->Strictviolation.}functionpubFn(){this.test='public';//->Strictviolation.privFn.call(this);//->Strictviolation.}return{pubVar:pubVar,pubFn:pubFn};}());m

javascript - 为什么 JavaScript 没有严格的大于/小于比较运算符?

虽然JavaScript的类型严格比较运算符(===、!==)很好,但它没有相应的大于/小于的严格比较。varx=10;x为什么不呢?我问这个问题完全期望答案是“呃,因为它没有”,但我还是要问,以防这些运算符被遗漏是出于有趣和/或令人沮丧的历史原因。 最佳答案 我只能猜测-如果a===b为假,则a!==b是真的。总是。但是,这个含义不适用于如果x是假的,我们无法推断出的结果x>==20因为它可能由于类型检查或关系检查而为假。我认为这有点令人困惑,尽管语言中有很多东西更糟糕(一般类型强制转换,仅举一个例子)。但是,我认为严格或>会表现

javascript - 我可以为特定功能禁用 ECMAscript 严格模式吗?

我没有在MDC或ECMAscript规范上找到任何关于我的问题的信息。可能有人知道解决这个问题的更“hacky”的方法。我正在对我环境中的每个javascript文件调用"usestrict"。我所有的文件都是这样开头的(function(win,doc,undef){"usestrict";//code&functions}(window,window.document));现在,我有一个处理错误的自定义函数。该函数使用.caller属性来提供上下文堆栈跟踪。看起来像这样:varchain=(function(){var_parent=_error,_ret='';while(_pa

javascript - 在 JavaScript switch 语句中假设严格比较是否安全?

我有一个变量,它可以是bool值false,也可以是整数(包括0)。我想把它放在一个switch语句中,例如:switch(my_var){case0://Dosomethingbreak;case1://Dosomethingelsebreak;casefalse://Someothercode}在我的GoogleChrome测试中,它似乎工作得很好,但我有点紧张使用它,因为我担心在某些浏览器中,如果my_var是false,它可能会执行自0==false以来的第一个case。我只是想知道JavaScript中是否有任何官方说明switch语句将使用严格比较使得0!==false,但

javascript - Uncaught SyntaxError : Block-scoped declarations (let, const, function, class) 在严格模式之外还不支持

这个问题在这里已经有了答案:Whatis"strictmode"andhowisitused?(9个回答)关闭7年前。此错误会在我的浏览器JS控制台上弹出,我不确定如何解释该消息。任何人都可以描述导致这种情况的原因吗?谢谢

opengl - 我如何使这个简单的 OpenGL 代码(在 "lenient"3.3 和 4.2 配置文件中工作)在严格的 3.2 和 4.2 核心配置文件中工作?

我注意到一些3D代码不会在严格的核心配置文件中呈现,但在“正常”(未明确要求仅作为核心)配置文件上下文中呈现良好。为了隔离这个问题,我编写了尽可能简单的OpenGL程序,只绘制一个三角形和一个矩形:我已经发布了那个OpenGL程序asaGisthere.当useStrictCoreProfile变量设置为false时,程序不会向控制台输出任何错误消息,并按照上面的屏幕截图在IntelHDOpenGL3.3和带有OpenGL4.2的GeForce。但是,将useStrictCoreProfile设置为true,它会清除背景颜色但不会绘制三边形和四边形,控制台输出是这样的:GLCONN:O

linux - 在 Linux 上严格解析 YYYY-MM-DD 日期

POSIX定义了一个方便的函数,strptime,可用于解析日期和时间。因此,理论上,如果我有一个格式为“YYYY-MM-DD”的日期,我应该能够使用strptime像这样解析它:charmyDate[]="2012-01-01";structtmresult;char*end=strptime(myDate,"%Y-%m-%d",&result);...并通过以下方式将其恢复为规范表示:if(end!=NULL){charoutDate[11];strftime(outDate,sizeof(outDate),"%Y-%m-%d",&result);printf("%s\n",out

linux - Haskell:从/proc 读取。严格和懒惰的问题。过程统计

我在从/proc读取文件时有非常奇怪的行为如果我用prelude的readFile懒惰地读取/proc/pid/stat-它可以工作但不是我想要的方式。使用Data.ByteString.readFile切换到严格读取会给我一个空字符串。我这里需要严格的阅读才能在短时间内比较两次阅读的结果。所以使用System.IO.readFile读取/proc/pid/stat根本行不通。它在0.5秒的间隔内给了我相同的结果。我认为这是由于懒惰和半关闭handle或其他原因......打开和关闭文件句柄明确有效。h但是如果我们有字节串严格阅读,为什么还要这样做。对吧?这就是我卡住的地方。impor