検索

  1. ブール型に変換
    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>
       

  2. パラメータに初期値を割り当てる
    JavaScript にはオーバーロードの概念はありませんが、JavaScript の関数のパラメータは、呼び出し時に 1 つのパラメータが欠落している場合、未定義に置き換えられました。 この例では、
       function plus(base, added) {<BR>
        return base + added;<BR>
       }<BR>
       plus(2); // NaN<BR>
       
    plus(2)plus(2, unknown) は同等であり、2 unknown の結果は NaN になります。 ここでの問題は、2 番目のパラメータが渡されない場合、それに初期値を割り当てる方法です。
       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>
       

  3. 他の人があなたのページを Iframe にロードできないようにします あなたの Web サイトが非常に人気になると、多くの Web サイトがあなたの Web サイトにリンクしたり、独自の Web ページを埋め込んだりすることになります。 IFrame 経由の Web ページ。
    これは面白くないので、この行動を止めるにはどうすればよいでしょうか?
    このコードは各ページの
       if(top !== window) {<BR>
        top.location.href = window.location.href;<BR>
       }<BR>
       
    ヘッド に配置する必要があります。実際に誰かがこのコードを使用しているかどうか知りたい場合は、Baidu のブログを参照してください。

  4. String Replacement
    String.prototype.replace この関数は、C# や Java に精通しているプログラマをしばしば混乱させます。 例:
       'Hello world, hello world'.replace('world', 'JavaScript');<BR>
       // The result is "Hello JavaScript, hello world"<BR>
       
    replace 関数の最初のパラメーターは正規表現です。 最初のパラメータとして文字列を渡すと、最初に見つかった一致する文字列のみが置換されます。
    この問題を解決するには、正規表現を使用できます:
    置換時に大文字と小文字を区別するように指定することもできます:
       '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>
       

  5. 引数を配列に変換します 関数
    arguments の事前定義変数は実際の配列ではなく、配列のようなオブジェクトです。
    length 属性はありますが、スライス、プッシュ、ソートなどの関数はありません。そこで、引数 にこれらにのみ使用できる関数を持たせる方法配列? 言い換えれば、
    引数を実数配列にするにはどうすればよいでしょうか?
       function args() {<BR>
        return [].slice.call(arguments, 0);<BR>
       }<BR>
       args(2, 5, 8); // [2, 5, 8]<BR>
       

  6. parseInt 関数の 2 番目のパラメータを指定します
    parseInt は、文字列を整数値に変換するために使用されます。 2 番目のパラメータはオプションです。 、最初のパラメータの 10 進数を指定するために使用されます。
       parseInt(str, [radix])<BR>
       
    2 番目のパラメータが渡されない場合は、次の規則に従います:
    ->
    str が 0x で始まる場合、16 進数とみなされます。 ->
    str が 0 で始まる場合、8 進数とみなされます。 -> それ以外の場合は、10 進数とみなされます。
    したがって、これらのルールを知らないと、次のコードは混乱するでしょう:
       parseInt('08'); // 0<BR>
       parseInt('08', 10); // 8<BR>
       
    したがって、安全側として、
    parseInt の 2 番目のパラメーターを必ず指定してください。
  7. 配列から要素を削除します おそらく、
    delete を使用してそれを行うことができます。 ご覧のとおり、
       var arr = [1, 2, 3, 4, 5];<BR>
       delete arr[1];<BR>
       arr; // [1, undefined, 3, 4, 5]<BR>
       
    delete では実行できません。本当に動作します 配列から要素を削除します。削除された要素は unknown に置き換えられ、配列の長さは変わりません。
    実際、以下に示すように、Array.prototype の
    splice 関数を通じて配列内の要素を削除できます。
       var arr = [1, 2, 3, 4, 5];<BR>
       arr.splice(1, 1);<BR>
       arr; // [1, 3, 4, 5]<BR>
       
    関数もオブジェクトです
  8. JavaScript では、関数にプロパティを追加できるため、関数もオブジェクトです。 例: この関数が呼び出された回数を記録するために、関数
    add
       function add() {<BR>
        return add.count++;<BR>
       }<BR>
       add.count = 0;<BR>
       add(); // 0<BR>
       add(); // 1<BR>
       add(); // 2<BR>
       
    count 属性を追加しました。 もちろん、これはより洗練された方法で実現できます。
    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>
       

    配列の最大値
  9. 数値でいっぱいの配列の最大値を見つける方法は、ループを通じて簡単に実行できます。 他に方法はありますか? 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>
       
       var arr = [2, 3, 45, 12, 8];<BR>
       Math.max.apply(null, arr); // 45<BR>
       
    IE に
    console.log
  10. 機能を追加 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>
       

    未定義
  11. は JavaScript の予約キーワードですか? そのように見えますが、実際には、未定義は JavaScript のキーワードではありません: このコードは奇妙に感じるかもしれませんが、正常に動作します。未定義
    これは単なる事前定義されたものです。 JavaScript の変数。
       var undefined = 'Hello'; <BR>
       undefined; // 'Hello'<BR>
       
    注: JavaScript プログラムではこれを決して行わないでください。このトリックは、これが事実であることを示すだけです。

  12. 判断一个变量是否为undefined
    两种情况下,一个变量为undefined:
    1. 声明了变量,但是没有赋值
       var name; <BR>
       name === undefined; // true<BR>
       
    2. 从来没有声明过此变量
       name2 === undefined; // error – name2 is not defined<BR>
       
    在第二种情况下,会有一个错误被抛出,那么如果判断一个变量是否为undefined而不产生错误呢?
    下面提供了一种通用的方法:
       typeof(name2) === ‘undefined'; // true<BR>
       

  13. 预加载图片
    预加载图片就是加载页面上不存在的图片,以便以后使用JavaScript把它们快速显示出来。
    比如你想在鼠标移动到某个图片上时显示另一张图片:
       var img = new Image(); <BR>
       img.src = "clock2.gif";<BR>
       
       <img src="/static/imghwm/default1.png"  data-src="clock.gif"  class="lazy" 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>
       

  14. 闭包(closure)
    闭包指的是函数内的局部变量,当函数返回时此变量依然可用。
    当你在函数内部定义另外一个函数时,你就创建了一个闭包,一个著名的例子:
       function add(i) { <BR>
        return function() { <BR>
         return ++i; <BR>
        }; <BR>
       } <BR>
       add(2).toString(); // "function () { return ++i; }" <BR>
       add(2)(); // 3<BR>
       
    add(2) 是一个函数,它可能获取外部函数的局部变量i
    参考文章

  15. 私有变量
    我们经常使用命名规范来标示一个变量是否为私有变量(最常用来标示):
       var person = { <BR>
        _name: '', <BR>
        getName: function() { <BR>
         return this._name || 'not defined'; <BR>
        } <BR>
       }; <BR>
       person.getName(); // "not defined"<BR>
       
    下划线前缀用来作为私有变量的约定,但是其他开发人员仍然可以调用此私有变量:
       person._name; // ""<BR>
       
    那么,如何在JavaScript中创建一个真正的私有变量呢?
    主要技巧是使用匿名函数(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>
       

  16. 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>
       

  17. 怪异的NaN
    NaN用来表示一个值不是数字。
    NaN在JavaScript中行为很怪异,是因为那NaN和任何值都不相等(包括它自己)。
       NaN === NaN; // false<BR>
       
    因为下面的代码可能会让一些人抓狂:
       parseInt('hello', 10); // NaN <BR>
       parseInt('hello', 10) == NaN; // false <BR>
       parseInt('hello', 10) === NaN; // false<BR>
       
    那么如何来检查一个值是否NaN?
    可以使用window.isNaN来判断:
       isNaN(parseInt('hello', 10)); // true<BR>
       

  18. 真值和假值
    JavaScript中所有值都能隐式地转化为Boolean类型。
    在条件判断中,下面这些值会自动转化为false:
    null, undefined, NaN, 0, ‘', false
    因此,不需要做如下复杂的判断:
       if(obj === undefined || obj === null) { <BR>
       }<BR>
       
    而只需要这样做就行了:
       if(!obj) { <br><br>
       }<BR>
       

  19. 修改arguments
    比如,添加一个值到arguments中:
       function add() { <BR>
        arguments.push('new value'); <BR>
       } <BR>
       add(); // error - arguments.push is not a function<BR>
       
    这样会出错,因为arguments 不是一个真正的数组,没有push方法。
    解决办法:
       function add() { <BR>
        Array.prototype.push.call(arguments, 'new value'); <BR>
        return arguments; <BR>
       } <BR>
       add()[0]; // "new value"<BR>
       

  20. Boolean 和 new Boolean
    我们可以把Boolean看做是一个函数,用来产生Boolean类型的值(Literal):
       Boolean(false) === false; // true <BR>
       Boolean('') === false; // true<BR>
       
    所以,Boolean(0)!!0 是等价的。
    我们也可以把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>
       

  21. 快速字符串连接
    我们经常使用+ 将较短的字符串连接为一个长字符串,这在大部分的情况下是没问题的。
    但是如果有大量的字符串需要连接,这种做法将会遇到性能问题,尤其是在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则表现的傻乎乎的。
  22. 一元操作符 +
    在JavaScript中,我们可以在字符串之前使用一元操作符“+”。这将会把字符串转化为数字,如果转化失败则返回NaN。
       2 + '1'; // "21"<BR>
       2 + ( +'1'); // 3<BR>
       
    如果把 + 用在非字符串的前面,将按照如下顺序进行尝试转化:
    1. 调用valueOf()
    2. 调用toString()
    3. 转化为数字
       +new Date; // 1242616452016<BR>
       +new Date === new Date().getTime(); // true<BR>
       +new Date() === Number(new Date) // true<BR>
       
    参考文章

  23. encodeURI和encodeURIComponent
    window.encodeURI函数用来编码一个URL,但是不会对以下字符进行编码:“:”, “/”, “;”, “?”.
    window.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>
       
    因此,在对URL进行编码时我们经常会选择 encodeURIComponent。

  24. table.innerHTML在IE下是只读属性
    我们经常通过节点的innerHTML 属性来填充节点,比如:
       <div id="container1"> </div><BR>
       
       document.getElementById('container1').innerHTML = "Hello World!";
    但是在IE下设置table.innerHTML 将会导致错误:
    <table id="table1"> </table><BR>
       
       // 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, thead, tr, select等元素的innerHTML属性在IE下都是只读的。

    那么如果动态的创建一个table呢,下面提供了一种可行的方法:
    <div id="table1"> </div><BR>
        
       document.getElementById('table1').innerHTML = "<table><tr><td>Hello</td><td>World!</td></tr></table>";<BR>
       

  25. 0.1+0.2 != 0.3
    JavaScript将小数作为浮点数对待,所以可能会产生一些四舍五入的错误,比如:
    0.1 + 0.2; // 0.30000000000000004
    你可以通过toFixed方法指定四舍五入的小数位数:
       (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);
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
JavaScriptエンジン:実装の比較JavaScriptエンジン:実装の比較Apr 13, 2025 am 12:05 AM

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

ブラウザを超えて:現実世界のJavaScriptブラウザを超えて:現実世界のJavaScriptApr 12, 2025 am 12:06 AM

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合)next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合)Apr 11, 2025 am 08:23 AM

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

next.jsを使用してマルチテナントSaaSアプリケーションを構築する方法(フロントエンド統合)next.jsを使用してマルチテナントSaaSアプリケーションを構築する方法(フロントエンド統合)Apr 11, 2025 am 08:22 AM

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

JavaScript:Web言語の汎用性の調査JavaScript:Web言語の汎用性の調査Apr 11, 2025 am 12:01 AM

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

JavaScriptの進化:現在の傾向と将来の見通しJavaScriptの進化:現在の傾向と将来の見通しApr 10, 2025 am 09:33 AM

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

javascriptの分解:それが何をするのか、なぜそれが重要なのかjavascriptの分解:それが何をするのか、なぜそれが重要なのかApr 09, 2025 am 12:07 AM

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

pythonまたはjavascriptの方がいいですか?pythonまたはjavascriptの方がいいですか?Apr 06, 2025 am 12:14 AM

Pythonはデータサイエンスや機械学習により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、簡潔な構文とリッチライブラリエコシステムで知られており、データ分析とWeb開発に適しています。 2。JavaScriptは、フロントエンド開発の中核です。 node.jsはサーバー側のプログラミングをサポートしており、フルスタック開発に適しています。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SublimeText3 中国語版

SublimeText3 中国語版

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

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター