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

人気の記事

人気の記事

ホットな記事タグ

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

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

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

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

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

ホットトピック











WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法

WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー

WebSocketとJavaScriptを使ったオンライン予約システムの実装方法

JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築

JavaScript で HTTP ステータス コードを簡単に取得する方法
