は良い考えではありません! mdnのeval
ページ:>この機能は時代遅れです。ブラウザは引き続きサポートしていますが、新しいプロジェクトでは推奨されていません。それを使用しないようにしてください。 eval
コードを含む文字列を実行します。たとえば、eval
eval("var x = 'Hello from eval!';"); console.log(x);
いくつかの問題が発生します:eval
- セキュリティ:文字列は、サードパーティのスクリプトまたはユーザー入力によって他のコマンドに挿入される場合があります。
- debug:
エラーをデバッグするのは難しいです - ライン番号や明らかな障害ポイントはありません。 最適化: - JavaScriptインタープリターは、それが変更される可能性があるため、必ずしもコードを事前互換化できるとは限りません。通訳はより効率的になっていますが、ほぼ確実にネイティブコードよりも遅くなります。 残念ながら、
はまだ厳格なモードでも機能しますが、通常は避けることができます。過去には、主にJSONの文字列をゆるくするために使用されていましたが、今ではより安全なeval
メソッドがあります。ただし、文字列に関数名がある場合、たとえば:eval
JSON.parse
// 我们要运行的函数 var fnstring = "runMe"; function runMe() { // 执行操作 }を使用せずに
関数をどのように実行するのですか?私は最近、HTML5 History APIを使用しているときにこれに遭遇しました。 Webワーカーまたはオブジェクトをシリアル化する他のAPIを使用する場合、同様の課題に直面する可能性があります。 eval
runMe()
pushState
のない最も簡単で安全な実装ソリューションは、次のような一連の条件です。
安全ですが、何十もの機能を呼び出したい場合は、書くのは非常に非効率的で頭痛がします。より良い解決策は、現在のウィンドウとそのすべてのアイテムを参照するeval
オブジェクトを使用することです。
// 我们要运行的函数 var fnstring = "runMe"; switch (fnstring) { case "functionX": functionX(); break; case "functionY": functionY(); break; case "functionZ": functionZ(); break; case "runMe": runMe(); break; }でオブジェクトとして利用可能であるかどうかを確認できます。たとえば、それを実行してください。
window
必要に応じて、追加のチェックを実行して、関数に予想される名前があることを確認できます。呼び出している関数にパラメーターがある場合はどうなりますか?おそらく配列に保存されていますか?問題ありません
fnstring
window
したがって、これが
// 我们要运行的函数 var fnstring = "runMe"; // 查找对象 var fn = window[fnstring]; // 对象是否为函数? if (typeof fn === "function") fn();
FAQは、eval
を使用せずに文字列からJavaScript関数を実行することに関する
eval()
を使用せずに、javaScript関数を文字列で呼び出すことの意味は何ですか?
JavaScriptのeval()
関数は、任意のコード文字列を実行できる強力なツールです。ただし、セキュリティとパフォーマンスの問題により、eval()
を使用することはしばしば悪い慣行と見なされます。コードを注射攻撃に対して脆弱にすることができます。さらに、最新のJavaScriptエンジンはコードのパフォーマンスを最適化しますが、実行されたコードを最適化することはできません。したがって、eval()
を使用せずに文字列を使用してJavaScript関数を呼び出す方法を知ることは非常に有益です。これは、より安全で効率的な代替品であるeval()
オブジェクトまたはwindow
コンストラクターを使用することで実現できます。 Function
オブジェクトを使用して、文字列を使用してJavaScript関数を呼び出す方法は? window
JavaScriptの
オブジェクトは、ブラウザによって表示されるウィンドウを表します。これは、ブラウザ環境のグローバルオブジェクトであり、すべてのグローバル変数と関数がwindow
オブジェクトの属性と方法になります。 window
オブジェクトを使用して、window
オブジェクトのプロパティとして関数にアクセスすることにより、文字列を使用して関数を呼び出すことができます。例は次のとおりです。window
eval("var x = 'Hello from eval!';"); console.log(x);は
関数を呼び出します。 window
hello()
window["hello"]
コンストラクターとは何ですか?文字列を使用して関数を呼び出すためにどのように使用しますか? hello()
JavaScriptの
コンストラクターは、新しいFunction
オブジェクトを作成します。これはあまり一般的ではありませんが、機能を定義するためのまだ効果的な方法です。文字列をコンストラクターに渡すことにより、文字列を使用して関数を呼び出すために
コンストラクターを使用できます。例は次のとおりです。
Function
このコードでは、Function
コンストラクターは、「a」と「b」という2つの引数を取得し、合計を返す新しい関数を作成します。パラメーターと関数本体は文字列として渡されます。 Function
// 我们要运行的函数 var fnstring = "runMe"; function runMe() { // 执行操作 }
はい、関数がオブジェクトの何らかの方法である場合でも、文字列を使用して関数を呼び出すことができます。これは、オブジェクトのプロパティにアクセスしてアクセスすることで行うことができます。これは、オブジェクトの処理方法に似ています。例は次のとおりです。Function
は
メソッドを呼び出します。文字列を使用してJavaScript関数を呼び出すことの制限は何ですか?
文字列を使用してJavaScript関数を呼び出すと便利な場合がありますが、いくつかの制限もあります。 1つの制限は、グローバル関数または既知のオブジェクトの方法にのみ適用されることです。関数が既知のオブジェクトのプロパティではない場合、文字列で呼び出すことはできません。別の制限は、パラメーターを関数に直接渡すことができないことです。関数がパラメーターを受け入れる場合、それらを文字列に含めるか、他の関数を使用してそれらを渡す必要があります。これらの制限にもかかわらず、文字列を使用した関数を呼び出すことは、正しく使用すると強力なツールです。
以上がevalを使用せずに文字列からJavaScript関数を呼び出す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PythonとJavaScriptにはそれぞれ独自の利点があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1. Pythonは、データサイエンスやバックエンド開発に適した簡潔な構文を備えた学習が簡単ですが、実行速度が遅くなっています。 2。JavaScriptはフロントエンド開発のいたるところにあり、強力な非同期プログラミング機能を備えています。 node.jsはフルスタックの開発に適していますが、構文は複雑でエラーが発生しやすい場合があります。

javascriptisnotbuiltoncorc;それは、解釈されていることを解釈しました。

JavaScriptは、フロントエンドおよびバックエンド開発に使用できます。フロントエンドは、DOM操作を介してユーザーエクスペリエンスを強化し、バックエンドはnode.jsを介してサーバータスクを処理することを処理します。 1.フロントエンドの例:Webページテキストのコンテンツを変更します。 2。バックエンドの例:node.jsサーバーを作成します。

PythonまたはJavaScriptの選択は、キャリア開発、学習曲線、エコシステムに基づいている必要があります。1)キャリア開発:Pythonはデータサイエンスとバックエンド開発に適していますが、JavaScriptはフロントエンドおよびフルスタック開発に適しています。 2)学習曲線:Python構文は簡潔で初心者に適しています。 JavaScriptの構文は柔軟です。 3)エコシステム:Pythonには豊富な科学コンピューティングライブラリがあり、JavaScriptには強力なフロントエンドフレームワークがあります。

JavaScriptフレームワークのパワーは、開発を簡素化し、ユーザーエクスペリエンスとアプリケーションのパフォーマンスを向上させることにあります。フレームワークを選択するときは、次のことを検討してください。1。プロジェクトのサイズと複雑さ、2。チームエクスペリエンス、3。エコシステムとコミュニティサポート。

はじめに私はあなたがそれを奇妙に思うかもしれないことを知っています、JavaScript、C、およびブラウザは正確に何をしなければなりませんか?彼らは無関係であるように見えますが、実際、彼らは現代のウェブ開発において非常に重要な役割を果たしています。今日は、これら3つの間の密接なつながりについて説明します。この記事を通して、JavaScriptがブラウザでどのように実行されるか、ブラウザエンジンでのCの役割、およびそれらが協力してWebページのレンダリングと相互作用を駆動する方法を学びます。私たちは皆、JavaScriptとブラウザの関係を知っています。 JavaScriptは、フロントエンド開発のコア言語です。ブラウザで直接実行され、Webページが鮮明で興味深いものになります。なぜJavascrを疑問に思ったことがありますか

node.jsは、主にストリームのおかげで、効率的なI/Oで優れています。 ストリームはデータを段階的に処理し、メモリの過負荷を回避します。大きなファイル、ネットワークタスク、リアルタイムアプリケーションの場合。ストリームとTypeScriptのタイプの安全性を組み合わせることで、パワーが作成されます

PythonとJavaScriptのパフォーマンスと効率の違いは、主に以下に反映されています。1)解釈された言語として、Pythonはゆっくりと実行されますが、開発効率が高く、迅速なプロトタイプ開発に適しています。 2)JavaScriptはブラウザ内の単一のスレッドに限定されていますが、マルチスレッドおよび非同期I/Oを使用してnode.jsのパフォーマンスを改善でき、両方とも実際のプロジェクトで利点があります。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

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

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール
