JavaScript 学習スキル_JavaScript スキル
-
ブール型に変換
JavaScript のすべての値は、次のように暗黙的にブール型に変換できます。ただし、これらの値はブール型ではありません。0 == false; // true<BR> 1 == true; // true<BR> '' == false // true<BR> null == false // true<BR>
ログイン後にコピー
そこで、比較に 3 つの等号を使用すると:ここで問題となるのは、他の型をブール型に変換する方法です:0 === false; // false<BR> 1 === true; // false<BR> '' === false // false<BR> null === false // false<BR>
ログイン後にコピー!!0 === false; // true<BR> !!1 === true; // true<BR> !!'' === false // true<BR> !!null === false // true<BR>
ログイン後にコピー
- パラメータに初期値を割り当てる
JavaScript にはオーバーロードの概念はありませんが、JavaScript の関数のパラメータは、呼び出し時に 1 つのパラメータが欠落している場合、< になります。 🎜>未定義に置き換えられました。 この例では、plus(2) と plus(2, unknown) は同等であり、2 unknown の結果は NaN になります。 。 ここでの問題は、2 番目のパラメータが渡されない場合、それに初期値を割り当てる方法です。function plus(base, added) {<BR> return base + added;<BR> }<BR> plus(2); // NaN<BR>
ログイン後にコピーfunction plus(base, added) {<BR> added = added || 1;<BR> return base + added;<BR> }<BR> plus(2); // 3<BR> plus(2, 2); // 4<BR>
ログイン後にコピー
一部のネチズンは plus(2, 0) = 3; と述べていますが、これは実際に当てはまり、この場所には特別な対応が必要のようです:function plus(base, added) {<BR> added = added || (added === 0 ? 0 : 1);<BR> return base + added;<BR> }<BR>
ログイン後にコピー - 他の人があなたのページを Iframe にロードできないようにします あなたの Web サイトが非常に人気になると、多くの Web サイトがあなたの Web サイトにリンクしたり、独自の Web ページを埋め込んだりすることになります。 IFrame 経由の Web ページ。
これは面白くないので、この行動を止めるにはどうすればよいでしょうか?
このコードは各ページのヘッド に配置する必要があります。実際に誰かがこのコードを使用しているかどうか知りたい場合は、Baidu のブログを参照してください。if(top !== window) {<BR> top.location.href = window.location.href;<BR> }<BR>
ログイン後にコピー
- String Replacement
String.prototype.replace この関数は、C# や Java に精通しているプログラマをしばしば混乱させます。 例:replace 関数の最初のパラメーターは正規表現です。 最初のパラメータとして文字列を渡すと、最初に見つかった一致する文字列のみが置換されます。'Hello world, hello world'.replace('world', 'JavaScript');<BR> // The result is "Hello JavaScript, hello world"<BR>
ログイン後にコピー
この問題を解決するには、正規表現を使用できます:
置換時に大文字と小文字を区別するように指定することもできます:'Hello world, hello world'.replace(/world/g, 'JavaScript');<BR> // The result is "Hello JavaScript, hello JavaScript"<BR>
ログイン後にコピー'Hello world, hello world'.replace(/hello/gi, 'Hi');<BR> // The result is "Hi world, Hi world"<BR>
ログイン後にコピー - 引数を配列に変換します 関数
arguments の事前定義変数は実際の配列ではなく、配列のようなオブジェクトです。
length 属性はありますが、スライス、プッシュ、ソートなどの関数はありません。そこで、引数 にこれらにのみ使用できる関数を持たせる方法配列? 言い換えれば、
引数を実数配列にするにはどうすればよいでしょうか?function args() {<BR> return [].slice.call(arguments, 0);<BR> }<BR> args(2, 5, 8); // [2, 5, 8]<BR>
ログイン後にコピー - parseInt 関数の 2 番目のパラメータを指定します
parseInt は、文字列を整数値に変換するために使用されます。 2 番目のパラメータはオプションです。 、最初のパラメータの 10 進数を指定するために使用されます。2 番目のパラメータが渡されない場合は、次の規則に従います:parseInt(str, [radix])<BR>
ログイン後にコピー
->
str が 0x で始まる場合、16 進数とみなされます。 ->
str が 0 で始まる場合、8 進数とみなされます。 -> それ以外の場合は、10 進数とみなされます。
したがって、これらのルールを知らないと、次のコードは混乱するでしょう:したがって、安全側として、parseInt('08'); // 0<BR> parseInt('08', 10); // 8<BR>
ログイン後にコピー
parseInt の 2 番目のパラメーターを必ず指定してください。 - 配列から要素を削除します おそらく、
delete を使用してそれを行うことができます。 ご覧のとおり、delete では実行できません。本当に動作します 配列から要素を削除します。削除された要素は unknown に置き換えられ、配列の長さは変わりません。var arr = [1, 2, 3, 4, 5];<BR> delete arr[1];<BR> arr; // [1, undefined, 3, 4, 5]<BR>
ログイン後にコピー
実際、以下に示すように、Array.prototype の
splice 関数を通じて配列内の要素を削除できます。関数もオブジェクトですvar arr = [1, 2, 3, 4, 5];<BR> arr.splice(1, 1);<BR> arr; // [1, 3, 4, 5]<BR>
ログイン後にコピー
- JavaScript では、関数にプロパティを追加できるため、関数もオブジェクトです。 例: この関数が呼び出された回数を記録するために、関数
add
にcount 属性を追加しました。 もちろん、これはより洗練された方法で実現できます。function add() {<BR> return add.count++;<BR> }<BR> add.count = 0;<BR> add(); // 0<BR> add(); // 1<BR> add(); // 2<BR>
ログイン後にコピー
arguments.callee
は、現在実行中の関数を指します。function add() {<BR> if(!arguments.callee.count) {<BR> arguments.callee.count = 0;<BR> }<BR> return arguments.callee.count++;<BR> }<BR> add(); // 0<BR> add(); // 1<BR> add(); // 2<BR>
ログイン後にコピー
配列の最大値
- 数値でいっぱいの配列の最大値を見つける方法は、ループを通じて簡単に実行できます。 他に方法はありますか? JavaScript には数値を処理するための Math
オブジェクトがあることは誰もが知っています:そして、次のように配列内の最大値を見つけることができます:var arr = [2, 3, 45, 12, 8];<BR> var max = arr[0];<BR> for(var i in arr) {<BR> if(arr[i] > max) {<BR> max = arr[i];<BR> }<BR> }<BR> max; // 45<BR>
ログイン後にコピーMath.max(2, 3, 45, 12, 8); // 45<BR>
ログイン後にコピーIE にvar arr = [2, 3, 45, 12, 8];<BR> Math.max.apply(null, arr); // 45<BR>
ログイン後にコピー
console.log - 機能を追加 Firefox での Firebug のサポートにより、ステーションの記録を制御するために console.log をよく使用します。いくつかの情報。
ただし、現時点では console オブジェクトがまったくないため、このアプローチでは IE で JavaScript を実行できなくなります (Firefox で Firebug が有効になっていない場合も同様です)。
次のヒントを使用して、この問題の発生を防ぐことができます:if (typeof(console) === 'undefined') {<BR> window.console = {<BR> log: function(msg) {<BR> alert(msg);<BR> }<BR> };<BR> }<BR> console.log('debug info.');<BR>
ログイン後にコピー
未定義 - は JavaScript の予約キーワードですか? そのように見えますが、実際には、未定義は JavaScript のキーワードではありません: このコードは奇妙に感じるかもしれませんが、正常に動作します。未定義
これは単なる事前定義されたものです。 JavaScript の変数。注: JavaScript プログラムではこれを決して行わないでください。このトリックは、これが事実であることを示すだけです。var undefined = 'Hello'; <BR> undefined; // 'Hello'<BR>
ログイン後にコピー
- 判断一个变量是否为undefined
两种情况下,一个变量为undefined:
1. 声明了变量,但是没有赋值2. 从来没有声明过此变量var name; <BR> name === undefined; // true<BR>
ログイン後にコピー在第二种情况下,会有一个错误被抛出,那么如果判断一个变量是否为undefined而不产生错误呢?name2 === undefined; // error – name2 is not defined<BR>
ログイン後にコピー
下面提供了一种通用的方法:typeof(name2) === ‘undefined'; // true<BR>
ログイン後にコピー
- 预加载图片
预加载图片就是加载页面上不存在的图片,以便以后使用JavaScript把它们快速显示出来。
比如你想在鼠标移动到某个图片上时显示另一张图片:var img = new Image(); <BR> img.src = "clock2.gif";<BR>
ログイン後にコピー<img src="clock.gif" src="clock.gif" alt="" <BR> onmouseover="this.src='clock2.gif';" <BR> onmouseout="this.src=clock.gif';" /><BR>
ログイン後にコピー
那么,如何加载一组图片呢?考虑如下代码:实际上,这段代码只能预加载最后的一张图片,因为其他的图片根本没有时间来预加载在循环到来的时候。var source = ['img1.gif','img2.gif']; <BR> var img = new Image(); <BR> for(var i = 0; i < source.length; i++) { <BR> img.src = source[i]; <BR> }<BR>
ログイン後にコピー
因此正确的写法应该是:var source = ['img1.gif','img2.gif']; <BR> for(var i = 0; i < source.length; i++) { <BR> var img = new Image(); <BR> img.src = source[i]; <BR> }<BR>
ログイン後にコピー
- 闭包(closure)
闭包指的是函数内的局部变量,当函数返回时此变量依然可用。
当你在函数内部定义另外一个函数时,你就创建了一个闭包,一个著名的例子:add(2) 是一个函数,它可能获取外部函数的局部变量i 。function add(i) { <BR> return function() { <BR> return ++i; <BR> }; <BR> } <BR> add(2).toString(); // "function () { return ++i; }" <BR> add(2)(); // 3<BR>
ログイン後にコピー
参考文章
- 私有变量
我们经常使用命名规范来标示一个变量是否为私有变量(最常用来标示):下划线前缀用来作为私有变量的约定,但是其他开发人员仍然可以调用此私有变量:var person = { <BR> _name: '', <BR> getName: function() { <BR> return this._name || 'not defined'; <BR> } <BR> }; <BR> person.getName(); // "not defined"<BR>
ログイン後にコピー那么,如何在JavaScript中创建一个真正的私有变量呢?person._name; // ""<BR>
ログイン後にコピー
主要技巧是使用匿名函数(anonymous function)和闭包(closure)。var person = {}; <BR> (function() { <BR> var _name = ''; <BR> person.getName = function() { <BR> return _name || 'not defined'; <BR> } <BR> })(); <br><br> person.getName(); // "not defined" <BR> typeof(person._name); // "undefined"<BR>
ログイン後にコピー
- JavaScript没有块级上下文(Scope)
JavaScript中块级代码没有上下文,实际上只有函数有自己的上下文。如果想创建一个上下文,可以使用自执行的匿名函数:for(var i = 0; i < 2; i ++) { <br><br> } <BR> i; // 2<BR>
ログイン後にコピー(function (){ <BR> for(var i = 0; i < 2; i ++) { <br><br> }<BR> })(); <BR> typeof(i) === 'undefined'; // true<BR>
ログイン後にコピー
- 怪异的NaN
NaN用来表示一个值不是数字。
NaN在JavaScript中行为很怪异,是因为那NaN和任何值都不相等(包括它自己)。因为下面的代码可能会让一些人抓狂:NaN === NaN; // false<BR>
ログイン後にコピー那么如何来检查一个值是否NaN?parseInt('hello', 10); // NaN <BR> parseInt('hello', 10) == NaN; // false <BR> parseInt('hello', 10) === NaN; // false<BR>
ログイン後にコピー
可以使用window.isNaN来判断:isNaN(parseInt('hello', 10)); // true<BR>
ログイン後にコピー
- 真值和假值
JavaScript中所有值都能隐式地转化为Boolean类型。
在条件判断中,下面这些值会自动转化为false:
null, undefined, NaN, 0, ‘', false
因此,不需要做如下复杂的判断:而只需要这样做就行了:if(obj === undefined || obj === null) { <BR> }<BR>
ログイン後にコピーif(!obj) { <br><br> }<BR>
ログイン後にコピー
- 修改arguments
比如,添加一个值到arguments中:这样会出错,因为arguments 不是一个真正的数组,没有push方法。function add() { <BR> arguments.push('new value'); <BR> } <BR> add(); // error - arguments.push is not a function<BR>
ログイン後にコピー
解决办法:function add() { <BR> Array.prototype.push.call(arguments, 'new value'); <BR> return arguments; <BR> } <BR> add()[0]; // "new value"<BR>
ログイン後にコピー
- Boolean 和 new Boolean
我们可以把Boolean看做是一个函数,用来产生Boolean类型的值(Literal):所以,Boolean(0) 和!!0 是等价的。Boolean(false) === false; // true <BR> Boolean('') === false; // true<BR>
ログイン後にコピー
我们也可以把Boolean看做是一个构造函数,通过new 来创建一个Boolean类型的对象:new Boolean(false) === false; // false <BR> new Boolean(false) == false; // true <BR> typeof(new Boolean(false)); // "object" <BR> typeof(Boolean(false)); // "boolean"<BR>
ログイン後にコピー
- 快速字符串连接
我们经常使用+ 将较短的字符串连接为一个长字符串,这在大部分的情况下是没问题的。
但是如果有大量的字符串需要连接,这种做法将会遇到性能问题,尤其是在IE下。var startTime = new Date();<BR> var str = '';<BR> for (var i = 0; i < 50000; i++) {<BR> str += i;<BR> }<BR> alert(new Date() - startTime); // Firefox - 18ms, IE7 - 2060ms<BR>
ログイン後にコピーvar startTime = new Date();<BR> var arr = [];<BR> for (var i = 0; i < 100000; i++) {<BR> arr.push(i);<BR> }<BR> var str = arr.join("");<BR> alert(new Date() - startTime); // Firefox - 38ms, IE7 - 280ms<BR>
ログイン後にコピー
可以看到Firefox似乎对+ 操作符进行了优化,而IE则表现的傻乎乎的。
- 一元操作符 +
在JavaScript中,我们可以在字符串之前使用一元操作符“+”。这将会把字符串转化为数字,如果转化失败则返回NaN。
2 + '1'; // "21"<BR> 2 + ( +'1'); // 3<BR>
ログイン後にコピー如果把 + 用在非字符串的前面,将按照如下顺序进行尝试转化:
- 调用valueOf()
- 调用toString()
- 转化为数字
参考文章+new Date; // 1242616452016<BR> +new Date === new Date().getTime(); // true<BR> +new Date() === Number(new Date) // true<BR>
ログイン後にコピー
- encodeURI和encodeURIComponent
window.encodeURI函数用来编码一个URL,但是不会对以下字符进行编码:“:”, “/”, “;”, “?”.
window.encodeURIComponent则会对上述字符进行编码。
我们通过一个例子来说明:因此,在对URL进行编码时我们经常会选择 encodeURIComponent。'index.jsp?page='+encodeURI('/page/home.jsp'); // "index.jsp?page=/page/home.jsp"<BR> 'index.jsp?page='+encodeURIComponent('/page/home.jsp'); // "index.jsp?page=%2Fpage%2Fhome.jsp"<BR>
ログイン後にコピー
- table.innerHTML在IE下是只读属性
我们经常通过节点的innerHTML 属性来填充节点,比如:<div id="container1"> </div><BR>
ログイン後にコピー但是在IE下设置table.innerHTML 将会导致错误:document.getElementById('container1').innerHTML = "Hello World!";
ログイン後にコピー<table id="table1"> </table><BR>
ログイン後にコピー实际上,table, thead, tr, select等元素的innerHTML属性在IE下都是只读的。// works well in Firefox, but fail to work in IE<BR> document.getElementById('table1').innerHTML = "<tr><td>Hello</td><td>World!</td></tr>";<BR>
ログイン後にコピー
那么如果动态的创建一个table呢,下面提供了一种可行的方法:<div id="table1"> </div><BR>
ログイン後にコピーdocument.getElementById('table1').innerHTML = "<table><tr><td>Hello</td><td>World!</td></tr></table>";<BR>
ログイン後にコピー
- 0.1+0.2 != 0.3
JavaScript将小数作为浮点数对待,所以可能会产生一些四舍五入的错误,比如:你可以通过toFixed方法指定四舍五入的小数位数:0.1 + 0.2; // 0.30000000000000004
ログイン後にコピー(0.1 + 0.2).toFixed(); // "0"<BR> (0.1 + 0.2).toFixed(1); // "0.3"
ログイン後にコピー
javascript 是一种区分大小写的程序语言.
定义数组:
var strweek= new Array(7);
问号表达式
var i= (condition)?A:B;
相当于if-else 语句;condition 成立 执行A ,不成立执行B;
switch 语句
var i=3;
var result="";
swithck(i);
{
case 1;
result="First";
case 2;
result="Second";
case 3;
result="Three";
break;
}
Date类
getDate() getYear() getMont()
getMinutes() getHours() getSeconds()
setTimeout("fution()",1000);

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
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 では、insertBefore() メソッドを使用して、DOM ツリーに新しいノードを挿入します。このメソッドには、挿入される新しいノードと参照ノード (つまり、新しいノードが挿入されるノード) の 2 つのパラメータが必要です。

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