<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>严格模式 on ZiYang FrontEnd Interview</title><link>https://fe-interview.pangcy.cn/tags/%E4%B8%A5%E6%A0%BC%E6%A8%A1%E5%BC%8F/</link><description>Recent content in 严格模式 on ZiYang FrontEnd Interview</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 06 Mar 2025 13:07:39 +0800</lastBuildDate><atom:link href="https://fe-interview.pangcy.cn/tags/%E4%B8%A5%E6%A0%BC%E6%A8%A1%E5%BC%8F/index.xml" rel="self" type="application/rss+xml"/><item><title>严格模式限制特性</title><link>https://fe-interview.pangcy.cn/docs/javascript/javascript-22/</link><pubDate>Tue, 04 Mar 2025 06:58:24 +0000</pubDate><guid>https://fe-interview.pangcy.cn/docs/javascript/javascript-22/</guid><description>&lt;h2 id="考察点分析">考察点分析 &lt;a href="#%e8%80%83%e5%af%9f%e7%82%b9%e5%88%86%e6%9e%90" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h2>&lt;p>本题主要考察以下核心能力：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>语言规范理解&lt;/strong>：对ES5严格模式特性的掌握程度&lt;/li>
&lt;li>&lt;strong>作用域机制&lt;/strong>：理解严格模式的作用域边界及声明位置要求&lt;/li>
&lt;li>&lt;strong>错误预防意识&lt;/strong>：识别严格模式如何修正松散模式的危险特性&lt;/li>
&lt;/ul>
&lt;p>具体技术评估点：&lt;/p>
&lt;ol>
&lt;li>严格模式下的变量声明规则&lt;/li>
&lt;li>语法限制（如重复参数、with语句）&lt;/li>
&lt;li>this绑定的变化&lt;/li>
&lt;li>对象属性操作限制&lt;/li>
&lt;li>严格模式的作用域生效规则&lt;/li>
&lt;/ol>
&lt;h2 id="技术解析">技术解析 &lt;a href="#%e6%8a%80%e6%9c%af%e8%a7%a3%e6%9e%90" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h2>&lt;h3 id="关键知识点">关键知识点 &lt;a href="#%e5%85%b3%e9%94%ae%e7%9f%a5%e8%af%86%e7%82%b9" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h3>&lt;ol>
&lt;li>
&lt;p>变量声明限制 &amp;gt; 语法约束 &amp;gt; this绑定变化 &amp;gt; 属性操作限制 &amp;gt; 作用域机制&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>原理剖析&lt;/strong>：
严格模式通过变更解析/执行规则消除JS不安全操作。例如未声明变量直接赋值会抛出&lt;code>ReferenceError&lt;/code>，而非创建全局变量。函数参数重复会触发语法错误，避免逻辑歧义。非方法调用时this指向&lt;code>undefined&lt;/code>，防止意外修改全局对象。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>常见误区&lt;/strong>：&lt;/p>
&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>认为严格模式是块级作用域（实际为函数/文件级）&lt;/li>
&lt;li>误将&lt;code>'use strict'&lt;/code>声明放在非首行导致失效&lt;/li>
&lt;li>混淆严格模式下的delete操作限制&lt;/li>
&lt;/ul>
&lt;h2 id="问题解答">问题解答 &lt;a href="#%e9%97%ae%e9%a2%98%e8%a7%a3%e7%ad%94" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h2>&lt;p>使用&lt;code>'use strict'&lt;/code>后主要行为变更包括：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>变量必须声明&lt;/strong>：未通过&lt;code>var/let/const&lt;/code>声明的变量赋值将报错&lt;/li>
&lt;li>&lt;strong>禁止重复参数&lt;/strong>：函数参数同名会触发语法错误&lt;/li>
&lt;li>&lt;strong>禁用with语句&lt;/strong>：无法通过&lt;code>with&lt;/code>扩展作用域链&lt;/li>
&lt;li>&lt;strong>安全this绑定&lt;/strong>：全局作用域/普通函数的&lt;code>this&lt;/code>为&lt;code>undefined&lt;/code>&lt;/li>
&lt;li>&lt;strong>不可删除限制&lt;/strong>：删除不可配置属性会抛出&lt;code>TypeError&lt;/code>&lt;/li>
&lt;/ol>
&lt;p>在函数内部使用时必须确保：&lt;/p>
&lt;ul>
&lt;li>&lt;code>'use strict'&lt;/code>必须是函数体的首个语句&lt;/li>
&lt;li>作用域仅限当前函数及其嵌套函数&lt;/li>
&lt;li>避免与外部作用域的严格模式声明冲突&lt;/li>
&lt;/ul>
&lt;h2 id="深度追问">深度追问 &lt;a href="#%e6%b7%b1%e5%ba%a6%e8%bf%bd%e9%97%ae" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h2>&lt;ol>
&lt;li>
&lt;p>&lt;strong>严格模式如何影响eval？&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>创建独立作用域，eval内声明变量不泄漏&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>如何检测当前是否处于严格模式？&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>通过&lt;code>this&lt;/code>是否为undefined判断&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>对象字面量重复属性如何处理？&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>ES5严格模式禁止，ES6+非严格模式允许（最后值覆盖）&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol></description></item></channel></rss>