49 個の JavaScript のヒントとコツ

49 個の JavaScript のヒントとコツ

序文:

これまで、私はブログでjsとjavascriptについての記事をかなり書いてきました。最近、いくつかの実用的なjsスキルをまとめた海外のブログを読みました。当初はそれを直接翻訳してブログに載せたかったのですが、オンラインで確認したところ、一部のネットユーザーがすでに翻訳しているようなので、ここではこれ以上面倒な作業はしません。これを基に、これまで見てきた js の知識をいくつか統合し、ブログにまとめていきます。以前、jQuery のよく使われるコードをまとめたので、ご覧ください。

1. js整数の演算

|0 と ~~ を使用すると浮動小数点数を整数に変換でき、同様の parseInt や Math.round よりも効率が速くなります。ピクセルやアニメーションの変位効果を処理するときに非常に便利です。パフォーマンスの比較については、こちらをご覧ください。

var foo = (12.4 / 4.13) | 0; // 結果は3
var bar = ~~(12.4 / 4.13); //結果は3


もう一つのちょっとしたコツがあります! ! 2 つの感嘆符を使用すると、値をブール値にすばやく変換できます。テストできます!

var eee="eee";
警報(!!eee)


返されるのは true です。つまり、すべての値の前に ! が付きます。 !すべて true に等しい可能性があります。値が元々ブール値、または undefined、null、0、false、NaN、'' でない限り、私が言及したundefinednull0falseNaN 、'' は元々 false なので、 2 つが追加されます。 !その後もそれは嘘のままです。

2. ネイティブアラートを書き換えてポップアップボックスの数を記録する

(関数() {
    var oldAlert = window.alert,
        カウント = 0;
    window.alert = 関数(a) {
        カウント++;
        oldAlert(a + "\n アラートを " + count + " 回呼び出しました。やめてください。これは悪です!");
    };
})();
alert("こんにちは、Haorooms");

3. 中間変数を宣言せずにデジタル交換する方法

2 つの数値を交換する一般的な方法は中間変数を宣言することですが、今日の方法は少し変わっています。中間変数を宣言する必要はありません。どのように実装されているかを見てみましょう。

var a=1,b=2;a=[b,b=a][0];
コンソールログ('a:'+a+',b:'+b);

 //出力a:2,b:1


この方法はいかがでしょうか? 爽快感を感じませんか?

4. すべては物体である

JavaScript世界では、すべてがオブジェクトです。 nullundefinedを除いて、数値、文字列、ブール値などの他の基本型には、対応するパッケージ オブジェクトがあります。オブジェクトの特性の 1 つは、オブジェクト上でメソッドを直接呼び出すことができることです。

基本的な数値型の場合、 toStringメソッドを呼び出そうとすると失敗しますが、括弧で囲むと失敗しません。内部実装では、対応するラッパー オブジェクトを使用して基本型をオブジェクトに変換します。したがって、 (1).toString() new Number(1).toString()。したがって、数値、文字列、ブール値などの基本型をオブジェクトとして使用することは可能ですが、適切な構文に注意してください。

同時に、 JavaScriptでは、数値が浮動小数点型と整数型に分かれていないことに気付きました。実際、すべての数値は浮動小数点型ですが、小数点は省略されています。たとえば、1 は 1. と記述できますが、1.toString() を試みるとエラーが発生するのはそのためです。正しい記述方法は、1..toString() のように記述するか、上記のように括弧を追加します。ここでの括弧の目的は、JS パーサーが 1 の後のドットを小数点として扱わないように修正することです。内部実装は上記の通りで、1. ラッパー オブジェクトをオブジェクトに変換してからメソッドを呼び出します。

5. If文のバリエーション

if ステートメントを記述する必要がある場合は、より簡単な方法を試して、代わりにJavaScriptで論理演算子を使用することをお勧めします。

たとえば、上記のコードはまず今日の日付を取得します。日曜日の場合はポップアップ ウィンドウが表示され、それ以外の場合は何も行われません。論理演算は短絡できることはわかっています。論理 AND 式の場合、両方が true の場合にのみ結果が true になります。前日の変数が false と判断された場合、AND 式全体の結果が false になるため、後続のアラートは実行されません。前日が true の場合、後続のコードは引き続き実行され、式全体の真偽が判定される必要があります。これは if の効果を実現するために使用されます。

従来の if 文では、実行本体のコードが 1 つの文を超える場合は中括弧が必要です。ただし、コンマ式を使用すると、中括弧なしで任意のコードを実行できます。

if(条件) alert(1),alert(2),console.log(3);

6. ==の代わりに===を使用する

== (または !=) 演算子は、必要に応じて自動的に型変換を実行します。 === (または !==) 演算では変換は実行されません。値と型の両方を比較し、== よりも高速であると考えられています。

[10] === 10 // 偽です
[10] == 10 // は真
'10' == 10 // は真
'10' === 10 // は偽です
 [] == 0 // は真
 [] === 0 // は偽
 '' == false // は true ですが、true == "a" は false です
 '' === false // は偽です

7. クロージャを使用してプライベート変数を実装する

関数 Person(名前, 年齢) {
    this.getName = function() { 名前を返します; };
    this.setName = function(newName) { name = newName; };
    this.getAge = function() { 年齢を返します; };
    this.setAge = function(newAge) { age = newAge; };

    // コンストラクターで初期化されていないプロパティ var occupation;
    this.getOc​​cupation = function() { 職業を返します; };
    this.setOccupation = function(newOcc) { 職業 = 
                         新しいOcc; };
}

8. オブジェクトコンストラクタを作成する

関数 Person(firstName, lastName){
    _firstName_ は、_firstName_ の後に続く最初の名前です。
    this.lastName = 姓;
}

var Saad = new Person("Saad", "Mousliki");

9. typeof、instanceof、コンストラクタに注意する

var arr = ["a", "b", "c"];
typeof arr; // "object" を返す
arr 配列のインスタンス // true
arr.コンストラクタ(); //[]

10. 自己呼び出し関数を作成する

これはSelf-Invoked Anonymous FunctionまたはIIFE-Immediately Invoked Function Expression ) と呼ばれることがよくあります。作成後すぐに自動的に実行される関数です。

通常は次のようになります。

(関数(){
    // 自動的に実行されるプライベートコード
})();
(関数(a,b){
    var 結果 = a+b;
    結果を返します。
})(10,20)

11. 配列からランダムな項目を取得する

var items = [12, 548, 'a', 2, 5478, 'foo', 8852, , 'Doe', 2145, 119];

var randomItem = items[Math.floor(Math.random() * items.length)];

12. 特定の範囲内で乱数を取得する

このコード スニペットは、最小値と最大値の間のランダムな給与値などのテスト データを生成する場合に役立ちます。

var x = Math.floor(Math.random() * (max - min + 1)) + min;

13. 0から設定された最大値までのデジタル配列を生成する

var numbersArray = [] 、最大値 = 100;

for( var i=1; numbersArray.push(i++) < max;); // 数値 = [0,1,2,3 ... 100]

14. 英数字のランダムな文字列を生成する

関数generateRandomAlphaNum(len) {
    var rdmstring = "";
    for( ; rdmString.length < len; rdmString += Math.random().toString(36).substr(2));
    rdmString.substr(0, len) を返します。
}

//メソッドgenerateRandomAlphaNum(15)を呼び出します。

15. 数字の配列をシャッフルする

var 数値 = [5, 458, 120, -215, 228, 400, 122205, -85411];
数値 = 数値.sort(function(){ return Math.random() - 0.5});
/* 配列の番号は、例えば [120, 5, 228, -215, 400, 458, -85411, 122205] になります */

16. 文字列トリム機能

String.prototype.trim = function(){return this.replace(/^\s+|\s+$/g, "");};

17. 配列を別の配列に追加する

var array1 = [12 , "foo" , {name: "Joe"} , -2458];

var array2 = ["Doe", 555, 100];
配列.プロトタイプ.プッシュ.適用(配列1、配列2);
/* 配列1は[12, "foo", {name "Joe"}, -2458, "Doe", 555, 100]に等しくなります */

18. 引数オブジェクトを配列に変換する

var argArray = Array.prototype.slice.call(引数);


[翻訳者注: arguments オブジェクトは配列のようなオブジェクトですが、実際の配列ではありません]

19. パラメータが数値であるかどうかを確認する

関数isNumber(n){
!isNaN(parseFloat(n)) && isFinite(n) を返します。
}

20. パラメータが配列であるかどうかを確認する

関数isArray(obj){
    Object.prototype.toString.call(obj) === '[オブジェクト配列]' を返します。
}


注意: toString() メソッドがオーバーライドされている場合、この手法を使用しても目的の結果が得られない可能性があります。または、以下を使用することもできます。

Array.isArray(obj); // これは新しい配列メソッドです

複数のframesを使用していない場合は、 instanceofメソッドを使用することもできます。しかし、複数のコンテキストがある場合は間違った結果が返されます。

var myFrame = document.createElement('iframe');
document.body.appendChild(myFrame);

var myArray = window.frames[window.frames.length-1].Array;
var arr = new myArray(a,b,10); // [a,b,10]

// instanceof は正しく動作せず、myArray はコンストラクタを失います
// コンストラクタはフレーム間で共有されません
arr 配列インスタンス; // false


[翻訳者注: 配列の判定方法についてはインターネット上で多くの議論があります。Google で検索してみてください。この記事は非常に詳細に書かれています。 】

21. 数値配列の最大値または最小値を取得する

var 数値 = [5, 458, 120, -215, 228, 400, 122205, -85411];
var maxInNumbers = Math.max.apply(Math, 数値);
var minInNumbers = Math.min.apply(Math, numbers);


[翻訳者注: ここでは、パラメータを渡すために Function.prototype.apply メソッドが使用されています]

22. 配列をクリアする

var myArray = [12, 222, 1000];
myArray.length = 0; // myArrayは[]と等しくなります。

23. 配列内の項目を削除するために delete を使用しないでください。

配列から項目を削除するには、delete ではなくspliceを使用します。 delete を使用すると、元の項目がundefinedに置き換えられるだけで、配列から実際に削除されるわけではありません。

このアプローチは使用しないでください:

var items = [12, 548 ,'a', 2, 5478, 'foo', 8852, , 'Doe',2154, 119];
items.length; // 11 を返す
アイテム[3]を削除します。 // trueを返します
items.length; // 11 を返す
/* 項目は [12, 548, "a", undefined × 1, 5478, "foo", 8852, undefined × 1, "Doe", 2154, 119] に等しくなります */


そして次のように使用します:

var items = [12, 548 ,'a', 2, 5478, 'foo', 8852, , 'Doe',2154, 119];
items.length; // 11 を返す
アイテムをスプライス(3,1);
items.length; // 10 を返す
/* 項目は [12, 548, "a", 5478, "foo", 8852, undefined × 1, "Doe", 2154, 119] に等しくなります */

オブジェクトのプロパティを削除するには、 deleteメソッドを使用する必要があります。

24. 配列を切り捨てるには長さを使う

上記の配列をクリアする方法と同様に、 lengthプロパティを使用して配列を切り捨てます。

var myArray = [12, 222, 1000, 124, 98, 10];
myArray.length = 4; // myArrayは[12, 222, 1000, 124]になります。


さらに、配列のlength現在よりも大きい値に設定すると、配列の長さが変更され、それを補うために新しい未定義の項目が追加されます。 配列のlength読み取り専用プロパティではありません。

myArray.length = 10; // 新しい配列の長さは 10 です
myArray[myArray.length - 1]; // 未定義

25. 条件判断には論理AND/ORを使用する

(V) と同じ、変換ステートメントの場合!

var foo = 10;
foo == 10 && doSomething(); // if (foo == 10) doSomething(); と同等
foo == 5 || doSomething(); // if (foo != 5) doSomething(); と同等


論理 AND は、関数パラメータのデフォルト値を設定するためにも使用できます。

関数doSomething(arg1){
    Arg1 = arg1 || 10; // arg1が設定されていない場合、Arg1はデフォルトで10になります
}

26. map() メソッドを使用して配列内の項目を反復処理する

var squares = [1,2,3,4].map(関数(val) {
    val *val を返します。
});
// 正方形は [1, 4, 9, 16] に等しくなります

27. 数値を小数点N桁に丸める

var 数値 =2.443242342;
num = num.toFixed(4); // numは2.4432になります

28. 浮動小数点問題

0.1 + 0.2 === 0.3 // は偽です
9007199254740992 + 1 // は 9007199254740992 に等しい
9007199254740992 + 2 // は 9007199254740994 に等しい

なぜこのようなことが起こるのでしょうか? 0.1+0.2は0.300000000000000004になります。すべての JavaScript 数値は、IEEE 754 標準に準拠した 64 ビットの 2 進浮動小数点数として内部的に表現されることに注意してください。詳細については、このブログ投稿をお読みください。この問題は、toFixed() メソッドと toPrecision() メソッドを使用して解決できます。

29. for-inを使用してオブジェクトの内部プロパティを走査する場合、プロパティのチェックに注意してください。

次のコード スニペットは、オブジェクトのプロパティを反復処理するときにプロトタイプ プロパティにアクセスしないようにします。

for (オブジェクト内の変数名) {
    オブジェクトが独自のプロパティを持っている場合(名前)
        // 名前を使って何かする
    }
}

30. カンマ演算子

var a = 0;
var b = ( a++, 99 );
console.log(a); // aは1になります
console.log(b); // bは99に等しい

31. 計算やクエリを必要とする変数をキャッシュする

jQueryセレクターの場合、これらの DOM 要素をキャッシュしたほうがよいでしょう。

var navright = document.querySelector('#right');
var navleft = document.querySelector('#left');
var navup = document.querySelector('#up');
var navdown = document.querySelector('#down');

32. isFinite() を呼び出す前にパラメータを確認する

isFinite(0/0); // 偽
isFinite("foo"); // 偽
isFinite("10"); // 真
isFinite(10); // 真
isFinite(未定義); // 偽
isFinite(); // 偽
isFinite(null); // 真です!!!

33. 配列内の負のインデックスを避ける

var 数値配列 = [1,2,3,4,5];
var from = numbersArray.indexOf("foo") ; // from は -1 に等しい
numbersArray.splice(from,2); // [5] を返します

indexOfを呼び出すときの引数が負の数でないことを確認してください。

34. JSONベースのシリアル化とデシリアル化

(serialization and deserialization)

var person = {name :'Saad', age : 26, department : {ID : 15, name : "R&D"} };
var stringFromPerson = JSON.stringify(person);
/* stringFromPerson は "{"name":"Saad","age":26,"department":{"ID":15,"name":"R&D"}}" に等しい */
var personFromString = JSON.parse(stringFromPerson);
/* personFromString は person オブジェクトと等しい */

35. eval() と Function コンストラクタの使用を避ける

evalおよびFunctionコンストラクターを使用すると、スクリプト エンジンを呼び出してソース コードを実行可能コードに変換するたびに、非常にコストのかかる操作になります。

var func1 = 新しい関数(関数コード);
var func2 = eval(関数コード);


36. with()の使用を避ける

with()使用すると、グローバル変数が挿入されます。そのため、同じ名前の変数は値が上書きされてしまい、不要なトラブルが発生します。

37. 配列を走査する際にfor-inの使用を避ける

このアプローチは使用しないでください。

var 合計 = 0;
for (var i in arrayNumbers) {
    合計 += 配列数値[i];
}

より良い方法は次のとおりです。

var 合計 = 0;
(var i = 0, len = arrayNumbers.length; i < len; i++) {
    合計 += 配列数値[i];
}

追加の利点は、i とlenの両方の値が 1 回だけ評価されることです。

以下よりも効率的です:

(var i = 0; i < arrayNumbers.length; i++) の場合

なぜ? arrayNumbers.lengthループのたびに計算されるためです。

38. setTimeout() および setInterval() を呼び出すときは、文字列ではなく関数を渡します。

setTimeout()またはsetInterval()に文字列を渡すと、文字列はevalを使用しているかのように解析されますが、これには非常に時間がかかります。

使用しないでください:

間隔を設定します('doSomethingPeriodically()', 1000);
setTimeOut('doSomethingAfterFiveSeconds()', 5000)


そして次のように使用します:

setInterval(定期的に何かを実行する, 1000);
タイムアウトを設定します(doSomethingAfterFiveSeconds, 5000);

39. 長いif/elseシーケンスの代わりにswitch/case文を使用する

判断すべき状況が 2 つ以上ある場合は、 switch / caseを使用する方が効率的でエレガントです (コードを整理しやすくなります)。ただし、判断する状況が 10 個を超える場合は、switch/case を使用しないでください。

40. 値の範囲を判断するときはswitch/caseを使用する

次の状況では、 switch / caseを使用して値の範囲を決定するのが妥当です。

関数 getCategory(年齢) {
    var カテゴリー = "";
    スイッチ(真){
        isNaN(年齢)の場合:
            category = "年齢ではありません";
            壊す;
        ケース(年齢 >= 50 歳):
            カテゴリ = "古い";
            壊す;
        ケース(年齢 <= 20):
            カテゴリ = "赤ちゃん";
            壊す;
        デフォルト:
            カテゴリ = "若い";
            壊す;
    };
    返品カテゴリ;
}
getCategory(5); // 「Baby」を返します

[翻訳者注: 一般的に、値の範囲を判断するには if/else を使用する方が適切です。値を決定するには、Switch/case の方が適しています。

41. 作成したオブジェクトのプロトタイプオブジェクトを指定する

指定されたパラメータをプロトタイプとしてオブジェクトを作成する関数を記述することができます。

関数クローン(オブジェクト) {
    関数 OneShotConstructor(){};
    OneShotConstructor.prototype = オブジェクト;
    新しい OneShotConstructor() を返します。
}
clone(Array).prototype; // []
42. HTMLエスケープ関数 function escapeHTML(text) {
    var replacements= {"<": "<", ">": ">","&": "&", "\"": """};
    戻り値 text.replace(/[<>&"]/g, function(文字) {
        置換文字[文字]を返します。
    });
}

43. ループ内でtry-catch-finallyを使用しない

実行時に、 catch句が実行されるたびに、キャッチされた例外オブジェクトが変数に割り当てられ、 try-catch-finally構造では、この変数が毎回作成されます。

次のような書き方は避けてください:

var オブジェクト = ['foo', 'bar'], i;
(i = 0, len = object.length; i < len; i++) の場合 {
    試す {
        // 例外をスローする何かを実行する
    }
    キャッチ(e){
        // 例外を処理する
    }
}

そして次のように使用します:

var オブジェクト = ['foo', 'bar'], i;
試す {
    (i = 0, len = object.length; i < len; i++) の場合 {
        // 例外をスローする何かを実行する
    }
}
キャッチ(e){
    // 例外を処理する
}

44. XMLHttpRequests のタイムアウトを設定します。

XHR リクエストに長い時間がかかる場合 (たとえば、ネットワークの問題が原因)、リクエストを中止する必要がある可能性があります。この場合、 XHR呼び出しでsetTimeout()を使用できます。

var xhr = 新しい XMLHttpRequest();
xhr.onreadystatechange = 関数 () {
    this.readyState == 4の場合{
        タイムアウトをクリアします(タイムアウト);
        // 応答データを使って何かを行う
    }
}
var タイムアウト = setTimeout( 関数 () {
    xhr.abort(); // エラーコールバックを呼び出す
}, 60*1000 /* 1分後にタイムアウト */ );
xhr.open('GET', url, true);  

xhr.send();

また、一般的には同期 Ajax リクエストは完全に避けるべきです。

45. WebSocket タイムアウトの処理

通常、 WebSocket接続が確立された後、アクティビティがない場合、サーバーは 30 秒後に接続をtime out 。ファイアウォールは、一定時間操作が行われないと切断されます。

タイムアウトの問題を防ぐために、空のメッセージを断続的にサーバーに送信することをお勧めします。これを行うには、接続を維持するための関数と接続をキャンセルするための関数の 2 つの関数をコードに追加します。このテクニックを使用すると、タイムアウトの問題を制御できます。

タイマーIDを使用します:

var タイマーID = 0;
関数keepAlive() {
    var タイムアウト = 15000;
    webSocket.readyState が webSocket.OPEN の場合 {
        webSocket.send();
    }
    タイマーID = setTimeout(keepAlive, タイムアウト);
}
関数 cancelKeepAlive() {
    if (タイマーID) {
        タイマーIDをキャンセルします。
    }
}


keepAlive()メソッドはwebSOcket接続のonOpen()メソッドの最後に追加し、 cancelKeepAlive()メソッドはonClose()メソッドの最後に追加する必要があります。

46. プリミティブ演算子は常に関数呼び出しよりも効率的です。

VanillaJSを使用してください。

たとえば、次のようにする代わりに:

var min = Math.min(a,b);
A. プッシュ(v);


そして次のように使用します:

var min = a < b ? ab;
A[A.長さ] = v;

47. 整数からランダムに値を選択する

特定の有名な引用やニュースイベントをランダムに表示できる非常に便利な数式があります。

=Math.floor(Math.random()*可能な値の総数 + 最初の可能な値)
例えば、2から10までの値を選択するには、次のように記述します。

var num=Math.floor(Math.random()*9+2)

上記の式を覚えておいてください! 〜

48. 時刻のフォーマット後、先頭の数字にゼロがなくなる

対処法はいろいろありますが、以下の方法がより簡単かつ効果的ですので記録しておきましょう!

関数 paddingLeftZero(str){
    ("00"+str).substr(str.length) を返します。
}

49. js はクッキーを設定します

getCookie: 関数 (名前) {
    var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");

    (arr = document.cookie.match(reg)) の場合
        unescape(arr[2])を返します。
    それ以外
        null を返します。
},
setCookie: 関数 (名前、値、日数) {
    var exp = 新しい Date();
    exp.setTime(exp.getTime() + 日数 * 24 * 60 * 60 * 1000);
    document.cookie = 名前 + "=" + escape(値) + ";expires=" + exp.toGMTString();
},

49. jsはその日の24時に時刻を取得します

新しい日付(新しい日付(新しい日付().toLocaleDateString()).getTime()+24*60*60*1000);


同様に0時の時刻

新しい日付(新しい日付(新しい日付().toLocaleDateString()).getTime());

これで、JavaScript に関する 49 の実用的なヒントに関する記事は終了です。JavaScript に関する実用的なヒントに関する関連コンテンツをさらにご覧になりたい場合は、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • JavaScript の書き方に関する 5 つのヒントを共有する
  • 一般的な JavaScript 配列操作スキル (パート 2)
  • 一般的なJavaScript配列操作テクニック
  • JavaScript 構造化分解割り当ての実践ガイド
  • インタラクティブな視覚化 JS ライブラリ gojs の使い方の紹介とヒント
  • 仕事の効率を上げるJS略語スキル20選
  • JavaScript を学ぶときに知っておくべき 3 つのヒント
  • 7つのキラーJSのヒントを共有

<<:  ボタンをEnterキーに関連付けるjsコード

>>:  ウェブサイトデザインの経験 ウェブサイト構築におけるよくある間違いのまとめ

推薦する

Douyin ロゴを作成する手順の CSS3 分析

「Tik Tok」も大人気で、ユーザー数は7億人と言われています。今日は、注目を集めるためにTikT...

Vue フィルターの実装と適用シナリオの詳細な説明

1. 簡単な紹介Vue.js を使用すると、一般的なテキストの書式設定に使用できる独自のフィルターを...

CocosCreator 一般的なフレームワーク設計リソース管理

目次Cocos Creator のリソース管理に関する問題リソースの依存関係リソースの使用レスローダ...

MySQL 5.7.19 インストールディレクトリに my.ini ファイルを作成する方法

前回の記事では、MySQL 5.7.19 無償インストール版 (64 ビット) の設定方法についての...

CSS BEM 記述標準の詳細な説明

BEM は、Web 開発に対するコンポーネントベースのアプローチです。ユーザー インターフェイスを独...

Linux nohup コマンドの原理と例の分析

nohup コマンドUnix/Linux を使用する場合、通常はプログラムをバックグラウンドで実行す...

MySQL インデックスの使用方法 (単一列インデックスと複数列インデックス)

1. 単一列インデックスどの列にインデックスを作成するかを選択することは、パフォーマンス最適化プロ...

Viteの新しい体験の詳細な説明

Vite とは何ですか? (フロントエンドの新しいおもちゃです) Vite は、ネイティブ ES モ...

HTML入力ドロップダウンメニューを実装する方法

コードをコピーコードは次のとおりです。 <html> <ヘッド> <m...

MySQL の列から行への変換のヒント (共有)

序文:多くのビジネス テーブルでは、歴史的またはパフォーマンス上の理由により、最初のパラダイムに違反...

MySQL 永続統計の詳細な説明

1. 永続的な統計情報の重要性:統計は、MySQL が実行プランを生成するためのガイドとして使用され...

CSSを使用して中央に固定された2つの列と適応型列を実現する方法

1. 絶対位置とマージンを使用するこの方法の原則は、左側と右側をドキュメントの流れから外れるように配...

MySQLの構文、特殊記号、正規表現の詳細な説明

Mysql でよく使用される表示コマンド1. 現在のデータベース サーバー内のデータベースの一覧を表...

写真とテキストによる MySQL と sqlyog のインストール チュートリアル

1. MySQL 1.1 MySQLのインストールmysql-5.5.27-winx64 ダウンロー...