文章列表


<p>在 JavaScript 中,数据类型可以分为原始值和引用值。原始值指的是简单的数据类型,如字符串、数字、布尔值、null 和 undefined;引用值指的是复杂的数据类型,如对象、数组、函数等。 原始值是通过值来比较的,也就是说,当两个变量的值相同时,它们就相等。而引用值是通过引用来比较的,也就是说,当两个变量引用同一个对象时,它们才相等。 下面是一些 JavaScript 中原始值和引用值的示例: 原始值</p><pre class="brush:js;toolbar:false">let&nbsp;a&nbsp;=&nbsp;10; let&nbsp;b&nbsp;=&nbsp;a;&nbsp;//&nbsp;b&nbsp;的值为&nbsp;10 b&nbsp;=&nbsp;20;&nbsp;//&nbsp;a&nbsp;的值不会改变,仍为&nbsp;10 let&nbsp;str1&nbsp;=&nbsp;&quot;hello&quot;; let&nbsp;str2&nbsp;=&nbsp;str1;&nbsp;//&nbsp;str2&nbsp;的值为&nbsp;&quot;hello&quot; str2&nbsp;=&nbsp;&quot;world&quot;;&nbsp;//&nbsp;str1&nbsp;的值不会改变,仍为&nbsp;&quot;hello&quot; let&nbsp;bool1&nbsp;=&nbsp;true; let&nbsp;bool2&nbsp;=&nbsp;bool1;&nbsp;//&nbsp;bool2&nbsp;的值为&nbsp;true bool2&nbsp;=&nbsp;false;&nbsp;//&nbsp;bool1&nbsp;的值不会改变,仍为&nbsp;true</pre><p>引用值</p><pre class="brush:js;toolbar:false">let&nbsp;obj1&nbsp;=&nbsp;{&nbsp;name:&nbsp;&quot;Alice&quot;,&nbsp;age:&nbsp;20&nbsp;}; let&nbsp;obj2&nbsp;=&nbsp;obj1;&nbsp;//&nbsp;obj2&nbsp;引用了&nbsp;obj1&nbsp;所指向的对象 obj2.age&nbsp;=&nbsp;21;&nbsp;//&nbsp;obj1&nbsp;和&nbsp;obj2&nbsp;都指向同一个对象,所以&nbsp;obj1.age&nbsp;也会变成&nbsp;21 let&nbsp;arr1&nbsp;=&nbsp;[1,&nbsp;2,&nbsp;3]; let&nbsp;arr2&nbsp;=&nbsp;arr1;&nbsp;//&nbsp;arr2&nbsp;引用了&nbsp;arr1&nbsp;所指向的数组 arr2.push(4);&nbsp;//&nbsp;arr1&nbsp;和&nbsp;arr2&nbsp;都指向同一个数组,所以&nbsp;arr1&nbsp;的长度也会变成&nbsp;4 function&nbsp;sayHello(name)&nbsp;{ &nbsp;&nbsp;console.log(`Hello,&nbsp;${name}!`); } let&nbsp;func1&nbsp;=&nbsp;sayHello; let&nbsp;func2&nbsp;=&nbsp;func1;&nbsp;//&nbsp;func2&nbsp;引用了&nbsp;func1&nbsp;所指向的函数 func2(&quot;Bob&quot;);&nbsp;//&nbsp;输出:Hello,&nbsp;Bob!</pre><p>需要注意的是,当把一个引用值赋值给另一个变量时,它们实际上是共享同一个对象。因此,修改一个变量的值也会影响另一个变量的值。</p>

<p>JavaScript 中函数有很多种用法,以下是其中的一些常见用法及示例: 函数声明(Function Declaration) 函数声明是最常见的定义函数的方式。使用 function 关键字定义一个函数,并给函数起一个名称。 示例:</p><pre class="brush:js;toolbar:false">function&nbsp;greet(name)&nbsp;{ &nbsp;&nbsp;console.log(`Hello,&nbsp;${name}!`); } greet(&quot;Alice&quot;);&nbsp;//&nbsp;输出:Hello,&nbsp;Alice!</pre><p>函数表达式(Function Expression) 函数表达式定义一个匿名函数,并将其赋值给一个变量。 示例:</p><pre class="brush:js;toolbar:false">const&nbsp;greet&nbsp;=&nbsp;function(name)&nbsp;{ &nbsp;&nbsp;console.log(`Hello,&nbsp;${name}!`); }; greet(&quot;Bob&quot;);&nbsp;//&nbsp;输出:Hello,&nbsp;Bob!</pre><p>箭头函数(Arrow Function) 箭头函数是 ES6 中引入的一种新的函数定义语法。它可以简化函数的书写,并且可以更方便地处理 this 指向的问题。 示例:</p><pre class="brush:js;toolbar:false">const&nbsp;greet&nbsp;=&nbsp;(name)&nbsp;=&gt;&nbsp;{ &nbsp;&nbsp;console.log(`Hello,&nbsp;${name}!`); }; greet(&quot;Charlie&quot;);&nbsp;//&nbsp;输出:Hello,&nbsp;Charlie!</pre><p>带默认参数的函数 JavaScript 中可以给函数参数设置默认值,当调用函数时没有传递参数时,将会使用默认值。 示例:</p><pre class="brush:js;toolbar:false">function&nbsp;greet(name&nbsp;=&nbsp;&quot;World&quot;)&nbsp;{ &nbsp;&nbsp;console.log(`Hello,&nbsp;${name}!`); } greet();&nbsp;//&nbsp;输出:Hello,&nbsp;World! greet(&quot;David&quot;);&nbsp;//&nbsp;输出:Hello,&nbsp;David!</pre><p>剩余参数(Rest Parameters) 剩余参数可以让我们在函数中接收一个变长参数的列表。 示例:</p><pre class="brush:js;toolbar:false">function&nbsp;sum(...numbers)&nbsp;{ &nbsp;&nbsp;return&nbsp;numbers.reduce((total,&nbsp;num)&nbsp;=&gt;&nbsp;total&nbsp;+&nbsp;num,&nbsp;0); } console.log(sum(1,&nbsp;2,&nbsp;3));&nbsp;//&nbsp;输出:6 console.log(sum(4,&nbsp;5,&nbsp;6,&nbsp;7));&nbsp;//&nbsp;输出:22</pre><p>函数作为参数 JavaScript 中的函数可以像普通变量一样被传递作为参数给另一个函数使用。 示例:</p><pre class="brush:js;toolbar:false">function&nbsp;greet(name)&nbsp;{ &nbsp;&nbsp;console.log(`Hello,&nbsp;${name}!`); } function&nbsp;greetUser(greeterFunction)&nbsp;{ &nbsp;&nbsp;greeterFunction(&quot;Emily&quot;); } greetUser(greet);&nbsp;//&nbsp;输出:Hello,&nbsp;Emily!</pre><p>函数作为返回值 JavaScript 中的函数也可以作为另一个函数的返回值。 示例:</p><pre class="brush:js;toolbar:false">function&nbsp;createGreeter(greeting)&nbsp;{ &nbsp;&nbsp;return&nbsp;function(name)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;console.log(`${greeting},&nbsp;${name}!`); &nbsp;&nbsp;}; } const&nbsp;greetInEnglish&nbsp;=&nbsp;createGreeter(&quot;Hello&quot;); greetInEnglish(&quot;Frank&quot;);&nbsp;//&nbsp;输出:Hello,&nbsp;Frank! const&nbsp;greetInFrench&nbsp;=&nbsp;createGreeter(&quot;Bonjour&quot;); greetInFrench(&quot;Gina&quot;);&nbsp;//&nbsp;输出:Bonjour,&nbsp;Gina!</pre><p>这些只是 JavaScript 中函数用法的一些常见示例,还有其他的用法,如递归函数、立即执行函数等。</p>

<p>在 JavaScript 中,变量是用来存储值的容器。变量可以是任何数据类型,如字符串、数字、布尔值、数组、对象等等。在使用变量之前,需要先声明它。声明变量可以使用 var、let 或 const 关键字。</p><p>以下是使用 var 声明变量的示例:</p><pre class="brush:bash;toolbar:false">var&nbsp;name&nbsp;=&nbsp;&quot;John&quot;;&nbsp;&nbsp;//&nbsp;声明一个名为&nbsp;name&nbsp;的变量,初始值为字符串&nbsp;&quot;John&quot; var&nbsp;age&nbsp;=&nbsp;30;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;声明一个名为&nbsp;age&nbsp;的变量,初始值为数字&nbsp;30 var&nbsp;isStudent&nbsp;=&nbsp;true;&nbsp;&nbsp;&nbsp;//&nbsp;声明一个名为&nbsp;isStudent&nbsp;的变量,初始值为布尔值&nbsp;true</pre><p>使用 let 声明变量与 var 类似,但 let 可以在同一作用域内多次声明同名变量,而 var 只会声明一次。</p><p>以下是使用 let 声明变量的示例:</p><pre class="brush:as3;toolbar:false">let&nbsp;name&nbsp;=&nbsp;&quot;John&quot;;&nbsp;&nbsp;//&nbsp;声明一个名为&nbsp;name&nbsp;的变量,初始值为字符串&nbsp;&quot;John&quot; let&nbsp;age&nbsp;=&nbsp;30;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;声明一个名为&nbsp;age&nbsp;的变量,初始值为数字&nbsp;30 let&nbsp;isStudent&nbsp;=&nbsp;true;&nbsp;&nbsp;&nbsp;//&nbsp;声明一个名为&nbsp;isStudent&nbsp;的变量,初始值为布尔值&nbsp;true</pre><p>使用 const 声明变量时,变量的值不能被重新赋值。在同一作用域内,不能使用 const 声明同名变量或使用 let 或 var 重新赋值。</p><p>以下是使用 const 声明变量的示例:</p><pre class="brush:as3;toolbar:false">const&nbsp;name&nbsp;=&nbsp;&quot;John&quot;;&nbsp;&nbsp;//&nbsp;声明一个名为&nbsp;name&nbsp;的变量,初始值为字符串&nbsp;&quot;John&quot; const&nbsp;age&nbsp;=&nbsp;30;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;声明一个名为&nbsp;age&nbsp;的变量,初始值为数字&nbsp;30 const&nbsp;isStudent&nbsp;=&nbsp;true;&nbsp;&nbsp;&nbsp;//&nbsp;声明一个名为&nbsp;isStudent&nbsp;的变量,初始值为布尔值&nbsp;true</pre><p>变量的值可以在使用时被重新赋值,如下所示:</p><pre class="brush:as3;toolbar:false">var&nbsp;x&nbsp;=&nbsp;5; x&nbsp;=&nbsp;10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;把&nbsp;x&nbsp;的值改为&nbsp;10</pre><p>在 JavaScript 中,变量可以被用于各种计算、逻辑和条件语句中。以下是一些示例:</p><pre class="brush:as3;toolbar:false">var&nbsp;a&nbsp;=&nbsp;5; var&nbsp;b&nbsp;=&nbsp;10; var&nbsp;sum&nbsp;=&nbsp;a&nbsp;+&nbsp;b;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;sum&nbsp;变量的值为&nbsp;15 var&nbsp;diff&nbsp;=&nbsp;b&nbsp;-&nbsp;a;</pre><p><span style="color: rgb(106, 153, 85);"></span><br/></p><p><br/></p><p><br/></p>

<p>在 JavaScript 中,变量是用来存储值的容器。变量可以是任何数据类型,如字符串、数字、布尔值、数组、对象等等。在使用变量之前,需要先声明它。声明变量可以使用 var、let 或 const 关键字。</p><p>以下是使用 var 声明变量的示例:</p><p></p><pre class="brush:bash;toolbar:false">var&nbsp;name&nbsp;=&nbsp;&quot;John&quot;;&nbsp;&nbsp;//&nbsp;声明一个名为&nbsp;name&nbsp;的变量,初始值为字符串&nbsp;&quot;John&quot; var&nbsp;age&nbsp;=&nbsp;30;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;声明一个名为&nbsp;age&nbsp;的变量,初始值为数字&nbsp;30 var&nbsp;isStudent&nbsp;=&nbsp;true;&nbsp;&nbsp;&nbsp;//&nbsp;声明一个名为&nbsp;isStudent&nbsp;的变量,初始值为布尔值&nbsp;true</pre><p>使用 let 声明变量与 var 类似,但 let 可以在同一作用域内多次声明同名变量,而 var 只会声明一次。</p><p>以下是使用 let 声明变量的示例:</p><p></p><pre class="brush:as3;toolbar:false">let&nbsp;name&nbsp;=&nbsp;&quot;John&quot;;&nbsp;&nbsp;//&nbsp;声明一个名为&nbsp;name&nbsp;的变量,初始值为字符串&nbsp;&quot;John&quot; let&nbsp;age&nbsp;=&nbsp;30;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;声明一个名为&nbsp;age&nbsp;的变量,初始值为数字&nbsp;30 let&nbsp;isStudent&nbsp;=&nbsp;true;&nbsp;&nbsp;&nbsp;//&nbsp;声明一个名为&nbsp;isStudent&nbsp;的变量,初始值为布尔值&nbsp;true</pre><p><span style="color: #6a9955;"></span><br/></p><p>使用 const 声明变量时,变量的值不能被重新赋值。在同一作用域内,不能使用 const 声明同名变量或使用 let 或 var 重新赋值。</p><p>以下是使用 const 声明变量的示例:</p><p></p><pre class="brush:as3;toolbar:false">const&nbsp;name&nbsp;=&nbsp;&quot;John&quot;;&nbsp;&nbsp;//&nbsp;声明一个名为&nbsp;name&nbsp;的变量,初始值为字符串&nbsp;&quot;John&quot; const&nbsp;age&nbsp;=&nbsp;30;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;声明一个名为&nbsp;age&nbsp;的变量,初始值为数字&nbsp;30 const&nbsp;isStudent&nbsp;=&nbsp;true;&nbsp;&nbsp;&nbsp;//&nbsp;声明一个名为&nbsp;isStudent&nbsp;的变量,初始值为布尔值&nbsp;true</pre><p><span style="color: #6a9955;"></span><br/></p><p>变量的值可以在使用时被重新赋值,如下所示:</p><p></p><pre class="brush:as3;toolbar:false">var&nbsp;x&nbsp;=&nbsp;5; x&nbsp;=&nbsp;10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;把&nbsp;x&nbsp;的值改为&nbsp;10</pre><p><span style="color: #6a9955;"></span><br/></p><p>在 JavaScript 中,变量可以被用于各种计算、逻辑和条件语句中。以下是一些示例:</p><p></p><pre class="brush:as3;toolbar:false">var&nbsp;a&nbsp;=&nbsp;5; var&nbsp;b&nbsp;=&nbsp;10; var&nbsp;sum&nbsp;=&nbsp;a&nbsp;+&nbsp;b;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;sum&nbsp;变量的值为&nbsp;15 var&nbsp;diff&nbsp;=&nbsp;b&nbsp;-&nbsp;a;</pre><p><span style="color: #6a9955;"></span><br/></p><p><br/></p>

<p>JavaScript 中有一些关键字和保留字,它们具有特殊的含义或用途,不能用作变量名或标识符。</p><p>以下是 JavaScript 中的一些关键字:</p><ul class=" list-paddingleft-2" style="list-style-type: disc;"><li><p>break</p></li><li><p>case</p></li><li><p>catch</p></li><li><p>class</p></li><li><p>const</p></li><li><p>continue</p></li><li><p>debugger</p></li><li><p>default</p></li><li><p>delete</p></li><li><p>do</p></li><li><p>else</p></li><li><p>export</p></li><li><p>extends</p></li><li><p>finally</p></li><li><p>for</p></li><li><p>function</p></li><li><p>if</p></li><li><p>import</p></li><li><p>in</p></li><li><p>instanceof</p></li><li><p>let</p></li><li><p>new</p></li><li><p>return</p></li><li><p>super</p></li><li><p>switch</p></li><li><p>this</p></li><li><p>throw</p></li><li><p>try</p></li><li><p>typeof</p></li><li><p>var</p></li><li><p>void</p></li><li><p>while</p></li><li><p>with</p></li><li><p>yield</p></li></ul><p>除了这些关键字,JavaScript 还有一些保留字,虽然它们目前没有被用作关键字,但将来可能会用作关键字,因此不应该用作变量名或标识符。以下是 JavaScript 中的一些保留字:</p><ul class=" list-paddingleft-2" style="list-style-type: disc;"><li><p>enum</p></li><li><p>implements</p></li><li><p>interface</p></li><li><p>package</p></li><li><p>private</p></li><li><p>protected</p></li><li><p>public</p></li><li><p>static</p></li></ul><p>如果你使用这些关键字或保留字作为变量名或标识符,JavaScript 解释器会将其作为关键字或保留字处理,可能会导致错误或异常。因此,在编写 JavaScript 代码时,应该避免使用这些关键字和保留字作为变量名或标识符。</p><p><br/></p>

<p>&lt;noscript&gt; 元素是 HTML 中的一个标记,它用于在浏览器不支持 JavaScript 或者 JavaScript 被禁用时提供替代内容。</p><p>当浏览器不能运行 JavaScript 时,它将忽略所有包含在 &lt;script&gt; 元素内的代码,并显示 &lt;noscript&gt; 元素内的替代内容。</p><p>例如,以下示例显示了一个页面标题,并使用 &lt;noscript&gt; 元素提供了一个备选方案:</p><pre class="brush:as3;toolbar:false">&lt;!DOCTYPE&nbsp;html&gt; &lt;html&gt; &lt;head&gt; &nbsp;&nbsp;&lt;title&gt;My&nbsp;Website&lt;/title&gt; &nbsp;&nbsp;&lt;script&gt; &nbsp;&nbsp;&nbsp;&nbsp;document.title&nbsp;=&nbsp;&quot;Updated&nbsp;Title&quot;; &nbsp;&nbsp;&lt;/script&gt; &nbsp;&nbsp;&lt;noscript&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;My&nbsp;Website&nbsp;(without&nbsp;JavaScript)&lt;/title&gt; &nbsp;&nbsp;&lt;/noscript&gt; &lt;/head&gt; &lt;body&gt; &nbsp;&nbsp;&lt;h1&gt;Welcome&nbsp;to&nbsp;my&nbsp;website&lt;/h1&gt; &nbsp;&nbsp;&lt;!--&nbsp;页面主要内容&nbsp;--&gt; &lt;/body&gt; &lt;/html&gt;</pre><p>在上面的例子中,如果浏览器支持 JavaScript,则 &lt;script&gt; 元素将更新页面标题。否则,浏览器将忽略 &lt;script&gt; 元素并显示 &lt;noscript&gt; 元素内的备选方案。备选方案的标题将包含 <span style="color: #ce9178;">&quot;(without JavaScript)&quot;</span> 后缀,这样用户就可以清楚地知道他们正在浏览未经修改的版本。</p><p>需要注意的是,如果浏览器支持 JavaScript,则 &lt;noscript&gt; 元素内的内容将被忽略,所以不要在其中包含重要的信息。&lt;noscript&gt; 元素应该只用于提供最基本的可用性和可访问性。</p><p>另外,需要注意的是,有些屏幕阅读器会跳过 &lt;noscript&gt; 元素,因此如果您依赖于该元素来提供替代内容,请确保其能够被屏幕阅读器正确处理。</p><p><br/></p>

<p>JavaScript 是一种动态类型语言,其支持以下数据类型: 字符串(String):用于表示文本数据,可以使用单引号或双引号括起来,例如:</p><pre class="brush:js;toolbar:false">let&nbsp;str1&nbsp;=&nbsp;&#39;Hello&nbsp;World&#39;; let&nbsp;str2&nbsp;=&nbsp;&quot;Welcome&nbsp;to&nbsp;JavaScript&quot;;</pre><p>数字(Number):用于表示数值数据,包括整数和浮点数,例如:</p><pre class="brush:js;toolbar:false">let&nbsp;num1&nbsp;=&nbsp;10; let&nbsp;num2&nbsp;=&nbsp;3.14;</pre><p>布尔值(Boolean):用于表示真假值,只有两个取值:true 和 false,例如:</p><pre class="brush:js;toolbar:false">let&nbsp;bool1&nbsp;=&nbsp;true; let&nbsp;bool2&nbsp;=&nbsp;false;</pre><p>空值(Null):用于表示空值或者不存在的值,例如:</p><pre class="brush:js;toolbar:false">let&nbsp;nullValue&nbsp;=&nbsp;null;</pre><p>未定义(Undefined):用于表示变量已声明但未初始化或者不存在的值,例如:</p><pre class="brush:js;toolbar:false">let&nbsp;undefinedValue&nbsp;=&nbsp;undefined;</pre><p>对象(Object):用于表示复杂数据类型,包括对象、数组、函数等,例如:</p><pre class="brush:js;toolbar:false">let&nbsp;obj&nbsp;=&nbsp;{&nbsp;name:&nbsp;&#39;John&#39;,&nbsp;age:&nbsp;30&nbsp;}; let&nbsp;arr&nbsp;=&nbsp;[1,&nbsp;2,&nbsp;3,&nbsp;4]; function&nbsp;sum(a,&nbsp;b)&nbsp;{ &nbsp;&nbsp;return&nbsp;a&nbsp;+&nbsp;b; }</pre><p>符号(Symbol):用于表示唯一的标识符,可以用于对象属性的键名,例如:</p><pre class="brush:js;toolbar:false">let&nbsp;symbol1&nbsp;=&nbsp;Symbol(&#39;foo&#39;); let&nbsp;symbol2&nbsp;=&nbsp;Symbol(&#39;foo&#39;); console.log(symbol1&nbsp;===&nbsp;symbol2);&nbsp;//&nbsp;false</pre><p>下面是一些数据类型的用法示例:</p><pre class="brush:js;toolbar:false">//&nbsp;字符串 let&nbsp;str&nbsp;=&nbsp;&#39;Hello&nbsp;World&#39;; console.log(str.length);&nbsp;//&nbsp;11 console.log(str.toUpperCase());&nbsp;//&nbsp;HELLO&nbsp;WORLD console.log(str.indexOf(&#39;World&#39;));&nbsp;//&nbsp;6 //&nbsp;数字 let&nbsp;num&nbsp;=&nbsp;3.14; console.log(num.toFixed(2));&nbsp;//&nbsp;3.14 console.log(Math.pow(2,&nbsp;3));&nbsp;//&nbsp;8 console.log(Math.sqrt(16));&nbsp;//&nbsp;4 //&nbsp;布尔值 let&nbsp;bool&nbsp;=&nbsp;true; console.log(!bool);&nbsp;//&nbsp;false console.log(bool&nbsp;&amp;&amp;&nbsp;true);&nbsp;//&nbsp;true console.log(bool&nbsp;||&nbsp;false);&nbsp;//&nbsp;true //&nbsp;空值和未定义 let&nbsp;nullValue&nbsp;=&nbsp;null; let&nbsp;undefinedValue; console.log(nullValue);&nbsp;//&nbsp;null console.log(undefinedValue);&nbsp;//&nbsp;undefined //&nbsp;对象 let&nbsp;obj&nbsp;=&nbsp;{&nbsp;name:&nbsp;&#39;John&#39;,&nbsp;age:&nbsp;30&nbsp;}; console.log(obj.name);&nbsp;//&nbsp;John console.log(obj.age);&nbsp;//&nbsp;30 console.log(obj.hasOwnProperty(&#39;name&#39;));&nbsp;//&nbsp;true let&nbsp;arr&nbsp;=&nbsp;[1,&nbsp;2,&nbsp;3,&nbsp;4]; console.log(arr.length);&nbsp;//&nbsp;4 console.log(arr[0]);&nbsp;//&nbsp;1 console.log(arr.includes(3));&nbsp;//&nbsp;true function&nbsp;sum(a,&nbsp;b)&nbsp;{ &nbsp;&nbsp;return&nbsp;a&nbsp;+&nbsp;b; } console.log(sum(1,&nbsp;2));&nbsp;//&nbsp;3 //&nbsp;符号 let&nbsp;symbol&nbsp;=&nbsp;Symbol(&#39;foo&#39;); console.log(typeof&nbsp;symbol);&nbsp;//&nbsp;symbol console.log(symbol.toString());&nbsp;//&nbsp;Symbol(foo)</pre>

<h5 style="color:red;">系统学习magento二次开发,推荐小册:<a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank">《Magento中文全栈二次开发 》</a></h5> <div class="image-container"> <p> <a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank"> <img src="https://www.maxiaoke.com/uploads/images/20230218/bb9c82995c24d1105676e02f373755f5.jpg" alt="Magento中文全栈二次开发"> </a> </p> </div> <div class="text-container" style="font-size:14px; color:#888"> <p>本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。</p> </div> <hr><p style="border: 0px solid rgb(217, 217, 227); box-sizing: border-box; --tw-border-spacing-x:0; --tw-border-spacing-y:0; --tw-translate-x:0; --tw-translate-y:0; --tw-rotate:0; --tw-skew-x:0; --tw-skew-y:0; --tw-scale-x:1; --tw-scale-y:1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness:proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width:0px; --tw-ring-offset-color:#fff; --tw-ring-color:rgba(59,130,246,0.5); --tw-ring-offset-shadow:0 0 transparent; --tw-ring-shadow:0 0 transparent; --tw-shadow:0 0 transparent; --tw-shadow-colored:0 0 transparent; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; margin-top: 0px; margin-bottom: 1.25em;">在Magento系统中,module.xml文件是一个用于定义模块名称的配置文件,它必须放置在模块或自定义模块目录下的以下文件路径中:magento/app/code/namespace/modulename/etc/module.xml。该文件定义了模块的基本信息,如模块的名称、版本号、序列、依赖项等,这些信息对于Magento系统的正确运行至关重要。 module.xml文件还可以用于指定模块的路由、布局、块和插件等方面的配置。此外,Magento系统中的每个模块都可以有一个全局和特定区域的di.xml文件,用于配置依赖项注入(Dependency Injection),以及指定敏感配置设置。</p><p style="border: 0px solid rgb(217, 217, 227); box-sizing: border-box; --tw-border-spacing-x:0; --tw-border-spacing-y:0; --tw-translate-x:0; --tw-translate-y:0; --tw-rotate:0; --tw-skew-x:0; --tw-skew-y:0; --tw-scale-x:1; --tw-scale-y:1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness:proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width:0px; --tw-ring-offset-color:#fff; --tw-ring-color:rgba(59,130,246,0.5); --tw-ring-offset-shadow:0 0 transparent; --tw-ring-shadow:0 0 transparent; --tw-shadow:0 0 transparent; --tw-shadow-colored:0 0 transparent; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; margin-top: 1.25em; margin-bottom: 1.25em;">在具体实践中,开发者可以将自己编写的插件模块放在 app/code/ 目录下,并按照一定的命名规则创建module.xml文件。例如,一个名为Test的模块的命名空间为Plugin,则它的文件路径应为app/code/Plugin/Test/etc/module.xml。创建module.xml文件后,开发者可以在其中指定模块的名称、版本号、依赖项等信息。</p><p style="border: 0px solid rgb(217, 217, 227); box-sizing: border-box; --tw-border-spacing-x:0; --tw-border-spacing-y:0; --tw-translate-x:0; --tw-translate-y:0; --tw-rotate:0; --tw-skew-x:0; --tw-skew-y:0; --tw-scale-x:1; --tw-scale-y:1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness:proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width:0px; --tw-ring-offset-color:#fff; --tw-ring-color:rgba(59,130,246,0.5); --tw-ring-offset-shadow:0 0 transparent; --tw-ring-shadow:0 0 transparent; --tw-shadow:0 0 transparent; --tw-shadow-colored:0 0 transparent; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; margin-top: 1.25em; margin-bottom: 1.25em;">module.xml文件是Magento系统中重要的配置文件之一,用于定义模块的基本信息和路由、布局、块和插件等方面的配置,确保模块在Magento系统中的正确运行。开发者可以根据Magento规范,创建自己的模块和module.xml文件,并在其中指定相关的配置信息。</p><p>通过定义module.xml文件,可以指定一个模块的名称,版本号和要加载的组件类型,以及与该模块相关的其他信息。以下是一个module.xml文件的示例:</p><pre class="brush:bash;toolbar:false">&lt;?xml&nbsp;version=&quot;1.0&quot;?&gt; &lt;config&nbsp;xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&nbsp;xsi:noNamespaceSchemaLocation=&quot;../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd&quot;&gt; &lt;module&nbsp;name=&quot;Vendor_Module&quot;&nbsp;setup_version=&quot;2.0.0&quot;&nbsp;schema_version=&quot;2.0.0&quot;&gt; &lt;sequence&gt; &lt;module&nbsp;name=&quot;Magento_Catalog&quot;/&gt; &lt;/sequence&gt; &lt;module&gt; &lt;/config&gt;</pre><p>在这个例子中,module.xml文件定义了Vendor_Module模块,它需要Magento_Catalog模块,以便加载时按照正确的顺序加载它们. 其中,name属性是模块的名称,setup_version属性是模块的版本号。在sequence节点中,可以定义模块的依赖关系。如果模块需要在其他模块之前加载,可以将这些模块添加到sequence节点中。</p><p><br/></p>

<h5 style="color:red;">系统学习magento二次开发,推荐小册:<a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank">《Magento中文全栈二次开发 》</a></h5> <div class="image-container"> <p> <a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank"> <img src="https://www.maxiaoke.com/uploads/images/20230218/bb9c82995c24d1105676e02f373755f5.jpg" alt="Magento中文全栈二次开发"> </a> </p> </div> <div class="text-container" style="font-size:14px; color:#888"> <p>本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。</p> </div> <hr><p>Magento是一款流行的电子商务平台,route.xml文件在Magento 2的扩展开发中扮演着重要的角色。在Magento 2中,路由系统的目的是将一个给定的URL路由到相应的控制器上,并执行相应的操作,而route.xml文件就是定义路由的主要文件之一。</p><p>routes.xml文件通过定义store-url、store-code、front-name、controller-name和action-name等参数,来确定URL与控制器的对应关系. 在Magento 2中,routes.xml文件可以存在于模块的etc/frontend和etc/adminhtml文件夹中,用于指定模块的前台和后台路由。<br/></p><p>routes.xml文件是一个XML格式的文件,通常由两个主要的标签,&lt;router&gt;和&lt;route&gt;组成。其中&lt;router&gt;标签指定了路由的类型,通常是standard。 &lt;route&gt;标签用于指定控制器的路径以及路由的frontName, 这个frontName被用作URL路径的一部分,用来表示模块。<br/></p><p>Magento 的路由系统是基于请求 URL 的匹配和处理,它可以将每个请求定向到相应的控制器,并且可以在需要时使用多个控制器。routes.xml 文件是 Magento 中定义路由的主要文件之一,下面是对其配置和说明的一些例子:<br/></p><p>一个简单的前端路由:<br/></p><pre class="brush:bash;toolbar:false">&lt;router&nbsp;id=&quot;standard&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;route&nbsp;frontName=&quot;example&quot;&nbsp;id=&quot;example&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;module&nbsp;name=&quot;Vendor_Module&quot;&nbsp;/&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;/route&gt; &lt;/router&gt;</pre><p>这段代码定义了一个名为 <span style="color: #ce9178;">&quot;example&quot;</span> 的前端路由,当我们的请求 URL 中包含 <span style="color: #ce9178;">&quot;example&quot;</span> 时,就会匹配到此路由。这个路由的模块名称是 <span style="color: #ce9178;">&quot;Vendor_Module&quot;</span>,它的控制器文件位于 <span style="color: #ce9178;">&quot;Vendor\Module\Controller&quot;</span> 目录下。</p><p>一个带有参数的前端路由:<br/></p><pre class="brush:bash;toolbar:false">&lt;router&nbsp;id=&quot;standard&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;route&nbsp;id=&quot;example&quot;&nbsp;frontName=&quot;example&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;module&nbsp;name=&quot;Vendor_Module&quot;&nbsp;/&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;action&nbsp;name=&quot;test&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param&nbsp;name=&quot;id&quot;&gt;[0-9]+&lt;/param&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/action&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;/route&gt; &lt;/router&gt;</pre><p>这个路由的名字还是 <span style="color: rgb(206, 145, 120);">&quot;example&quot;</span>,但它有一个名为 <span style="color: rgb(206, 145, 120);">&quot;test&quot;</span> 的动作,这个动作有一个名为 <span style="color: rgb(206, 145, 120);">&quot;id&quot;</span> 的参数,它的值必须是一个数字。例如,当我们请求 URL <span style="color: rgb(206, 145, 120);">&quot;example/test/id/123&quot;</span> 时,它将匹配到此路由,并将参数 <span style="color: rgb(206, 145, 120);">&quot;id&quot;</span> 的值设置为 <span style="color: rgb(206, 145, 120);">&quot;123&quot;</span>。<br/></p><p>一个后台路由:<br/></p><pre class="brush:bash;toolbar:false">&lt;router&nbsp;id=&quot;admin&quot;&gt; &lt;route&nbsp;id=&quot;example&quot;&nbsp;frontName=&quot;example&quot;&gt; &lt;module&nbsp;name=&quot;Vendor_Module&quot;&nbsp;/&gt; &lt;/route&gt; &lt;/router&gt;</pre><p>这个路由的类型是 <span style="color: #ce9178;">&quot;admin&quot;</span>,这意味着它是用于后台的。和前面的例子一样,它的模块名称是 <span style="color: #ce9178;">&quot;Vendor_Module&quot;</span>,控制器文件位于 <span style="color: #ce9178;">&quot;Vendor\Module\Controller\Adminhtml&quot;</span> 目录下。当我们请求 URL <span style="color: #ce9178;">&quot;admin/example/index/index&quot;</span> 时,它将匹配到此路由。</p><p><br/></p><p>总结,route.xml文件的作用是帮助Magento系统将URL路由到对应的控制器,从而实现系统的功能。开发人员可以通过定义自定义的routes.xml文件,来指定URL的路由规则和前缀。</p><p><br/></p><p><br/></p>

<h5 style="color:red;">系统学习magento二次开发,推荐小册:<a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank">《Magento中文全栈二次开发 》</a></h5> <div class="image-container"> <p> <a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank"> <img src="https://www.maxiaoke.com/uploads/images/20230218/bb9c82995c24d1105676e02f373755f5.jpg" alt="Magento中文全栈二次开发"> </a> </p> </div> <div class="text-container" style="font-size:14px; color:#888"> <p>本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。</p> </div> <hr><p>Magento 系统中的 env.php 文件是 Magento 的配置文件之一,它存储了 Magento 系统中的一些关键配置信息。下面是 env.php 文件中的一些常见配置选项以及它们的作用:</p><p><br/></p><p>db:数据库连接信息,包括数据库名称、用户名、密码、主机名和端口号等。</p><p>cache:缓存配置,指定了 Magento 使用的缓存类型,包括文件、数据库、Redis 等等。</p><p>session:会话配置,指定了 Magento 的会话存储方式,包括文件、数据库、Redis 等等。</p><p>crypt:密码加密配置,指定了 Magento 使用的密码加密算法。</p><p>resource:资源配置,指定了 Magento 使用的资源模型、实体模型以及数据表前缀等信息。</p><p>x-frame-options:安全配置,指定了 Magento 如何设置 X-Frame-Options 标头,用于防止点击劫持攻击。</p><p>MAGE_MODE:Magento 模式配置,指定了 Magento 当前运行的模式,包括开发模式、生产模式等等。</p><p><br/></p><p>这些配置选项可以通过在 env.php 文件中进行设置来调整 Magento 的行为。如果你需要更改这些配置选项,可以在编辑 env.php 文件后重新加载 Magento 系统。注意,在更改 env.php 文件之前请备份它,以便在出现问题时能够恢复系统。</p><p><br/></p>