間違いを避けるための Javascript の落とし穴のリスト_JavaScript のヒント
翻译讲究"信雅达",我就谈不上了.希望能把文章的意思不要弄错就行.
编程的陷阱(gotcha)是指计算机系统中的意想不到的文档特征而不是bug.这些陷阱使得初学者远离javascript编程.在我看来,因为所有的浏览器都能运行javascript使得它是使用最广泛的语言之一,但它也是最少人研究的.让我们从一个基础的示例开始.
1.浮点运算
这可能是挫败一些对javascript不熟悉并准备执行一些数学运算的人的主要原因.
-
<script> </span></span>
</li>
<li>
<span>alert(0.02 / 0.1); <span class="comment">//0.19999999999999998 </span><span> </span></span>
</li>
<li class="alt">
<span>alert(1.14 * 100); <span class="comment">//113.99999999999999 ;)</span><span> </span></span>
</li>
<li><span></script>
Math.round()就能在这里派上用场.
2.加号操作符的重载
"+"加号运算符即能做算术运算,又能够做字符串的连接.如果正确的使用它是很便利的.让我们看一看.
-
<script> </span></span>
</li>
<li>
<span><span class="keyword">var</span><span> msg, one=</span><span class="string">"1"</span><span>; </span></span>
</li>
<li class="alt">
<span>msg = 2 + <span class="string">"1"</span><span>; </span><span class="comment">// msg = "21"</span><span> </span></span>
</li>
<li>
<span>msg = 2 + one; <span class="comment">// msg = "21"</span><span> </span></span>
</li>
<li class="alt">
<span>msg = 1 + 1 + 1 + <span class="string">" musketeers"</span><span>; </span><span class="comment">// msg = "3 musketeers"</span><span> </span></span>
</li>
<li>
<span>msg = <span class="string">"Bond "</span><span> + 0 + 0 + 7; </span><span class="comment">//msg = "Bond 007" </span><span> </span></span>
</li>
<li class="alt"><span></script>
上述行为是因为这些运算都是从左到右执行的.类型的转换是基于其中的字符串或数字.
3.行尾插入分号
javascript 自动在行尾插入分号";",让我们来看看这在一个简单的示例中的情况.
-
<script> </span></span>
</li>
<li>
<span><span class="keyword">function</span><span> returnSame(a){ </span></span>
</li>
<li class="alt">
<span> <span class="keyword">return</span><span> </span><span class="comment">//Inserts semi-colon to convert to return;</span><span> </span></span>
</li>
<li>
<span> a <span class="comment">//a becomes a; - Unreachable</span><span> </span></span>
</li>
<li class="alt">
<span>} </span>
</li>
<li>
<span>alert(returnSame(2)); <span class="comment">//Output is undefined</span><span> </span></span>
</li>
<li class="alt"><span></script>
当在创建对象或使用对象的值的时候这个神奇的分号能使事情变得更复杂.
4.typeof操作符
typeof 是一个一元操作符,运算结果往往并不是如预期的那样.令人吃惊的是对"null"的运算结果是"object"
- <script> </span></span> </li> <li> <span><span class="keyword">var</span><span> obj={}; </span><span class="comment">//object created using object literal</span><span> </span></span> </li> <li class="alt"> <span><span class="keyword">var</span><span> arr=[]; </span><span class="comment">//array created by array literal</span><span> </span></span> </li> <li> <span>alert(<span class="keyword">typeof</span><span>(obj)); </span><span class="comment">//object - Good</span><span> </span></span> </li> <li class="alt"> <span>alert(<span class="keyword">typeof</span><span>(arr)); </span><span class="comment">//object - Bad</span><span> </span></span> </li> <li> <span>alert(<span class="keyword">typeof</span><span>(</span><span class="keyword">null</span><span>)); </span><span class="comment">//object - Ugly! ;)</span><span> <br></span></span> </li> <li><span><span></script>
它仅仅能查找对象的原始类型.
5. false, null, undefined, NaN, Infinity
尽管他们看起来相似,但他们代表着不通的意思.javascript有3种基本数据类型数字numbers, 字符串strings 和布尔 boolean,除此之外还有两个不重要的数据类型"undefine"和"null".按照"=="运算符运算,null和undefine是相等的.
-
<script> </span>
</li>
<li class="alt">
<span><span class="keyword">var</span><span> a; </span></span>
</li>
<li>
<span>alert (a); <span class="comment">//undefined</span><span> </span></span>
</li>
<li class="alt">
<span>alert (1/0); <span class="comment">//Infinity</span><span> </span></span>
</li>
<li>
<span>alert (0/0); <span class="comment">//NaN</span><span> </span></span>
</li>
<li class="alt">
<span>0/0 == 0/0; <span class="comment">//false - a NaN != NaN</span><span> </span></span>
</li>
<li>
<span>alert (b); <span class="comment">//error</span><span> </span></span>
</li>
<li class="alt"><span></script>
6.字符串只替换第一个匹配的字符
与PHP或其他程序语言不同,默认情况下,javascript的字符替换只替换第一个出现的匹配的字符.
-
<script> </span></span>
</li>
<li>
<span><span class="keyword">var</span><span> nospace = </span><span class="string">"I dont need spaces"</span><span>.replace(</span><span class="string">" "</span><span>,</span><span class="string">"_"</span><span>); </span></span>
</li>
<li class="alt">
<span>alert(nospace); <span class="comment">//I_dont need spaces - Only first occurence</span><span> </span></span>
</li>
<li>
<span><span class="keyword">var</span><span> nospace = </span><span class="string">"I dont need spaces"</span><span>.replace(/ /g,</span><span class="string">"_"</span><span>); </span></span>
</li>
<li class="alt">
<span>alert(nospace); <span class="comment">//I_dont_need_spaces</span><span> </span></span>
</li>
<li><span></script>
7.parseInt 関数
parseInt は文字列を整数型に変換するために使用されます。この関数は 2 つのパラメーターを渡すことができます。ここでは 10 進数が指定されています。基数が指定されていない場合は、parseInt 関数が使用されます。その場合、0 で始まる文字列は 8 進数に変換されます。
- <スクリプト>
- var str = "017"; var
- strInt = parseInt(str) //strInt = 15 ;) var
- strInt = parseInt(str,10) //strInt = 17 ;

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

使用法: JavaScript では、insertBefore() メソッドを使用して、DOM ツリーに新しいノードを挿入します。このメソッドには、挿入される新しいノードと参照ノード (つまり、新しいノードが挿入されるノード) の 2 つのパラメータが必要です。

JavaScript は Web 開発で広く使用されているプログラミング言語であり、WebSocket はリアルタイム通信に使用されるネットワーク プロトコルです。 2 つの強力な機能を組み合わせることで、効率的なリアルタイム画像処理システムを構築できます。この記事では、JavaScript と WebSocket を使用してこのシステムを実装する方法と、具体的なコード例を紹介します。まず、リアルタイム画像処理システムの要件と目標を明確にする必要があります。リアルタイムの画像データを収集できるカメラ デバイスがあるとします。
