JavaScript の面接での 14 の厳しい質問に対するコード例の詳細な分析
フロントエンド エンジニアは、面接中にある種の面接官に遭遇することがあります。彼らが尋ねる質問は、言語自体について非常に深刻であり、多くの場合、候補者が期待する実際的な質問ではありません (一部の候補者は、それができれば十分であると強調します。理由を知っているかどうかについては関係ありません)。このタイプの質問には論理はありませんが、受験者の javascript
言語に対する理解をある程度テストします。 javascript
这门语言的理解。
突然想到这个话题是无聊在翻自己的Github,看看以前都写过什么丑货。然后翻到了这篇解释Javascript quiz的文章quiz-legend,反正没事儿,就想搬过来供大家学习、理解、背诵、批判。
问题一
(function(){ return typeof arguments;//"object" })();
arguments
是一个Array-like对象,对应的就是传入函数的参数列表。你可以在任何函数中直接使用该变量。
typeof
操作符只会返回string
类型的结果。参照如下列表可知对应不同数据,typeof
返回的值都是什么:
类型 | 结果 |
---|---|
undefined | 'undefined' |
null | 'object' |
Boolean | 'boolean' |
Number | 'number' |
String | 'string' |
Symbol (new in ECMAScript 2015) | 'symbol' |
Host object (provided by the JS environment) | Implementation-dependent |
Function object (implements [[Call]] in ECMA-262 terms) | 'function' |
Any other object | 'object' | 私が突然このトピックを思い出したのは、退屈していて、自分が以前にどんな醜いことを書いたかを確認するために Github を調べていたからです。そんなとき、JavaScript クイズを説明するこの記事のクイズ凡例を見つけました。とにかく、それでいいので、誰もが学び、理解し、暗唱し、批判できるようにここに移動したいと思いました。
typeof
演算子は、string
型の結果のみを返します。さまざまなデータに対して typeof
によって返される値が何であるかを確認するには、次のリストを参照してください: 🎜入力 | 結果 | 🎜||
---|---|---|---|
未定義 🎜 | '未定義' 🎜🎜 | ||
null 🎜 | 'オブジェクト' 🎜🎜 | ||
ブール値 🎜 | 'boolean' 🎜🎜 | ||
'number' 🎜🎜 | |||
文字列</code >🎜<td align="left"><code>'string' 🎜🎜 | |||
シンボル (ECMAScript 2015 の新機能)🎜 | < code>'symbol'🎜🎜 | ||
ホスト オブジェクト (JS 環境によって提供される)🎜 | 実装に依存します🎜🎜< tr> | 関数オブジェクト (ECMA-262 用語で [[Call]] を実装)🎜 | 'function' 🎜🎜 |
'object' 🎜🎜🎜🎜
问题二var f = function g(){ return 23; }; typeof g();//报错 ログイン後にコピー ログイン後にコピー 这是一个名字是 这里的函数名
问题三(function(x){ delete x; return x;//1 })(1); ログイン後にコピー
delete object.property delete object['property'] ログイン後にコピー
问题四var y = 1, x = y = typeof x; x;//"undefined" ログイン後にコピー 我们试图分解上述代码成下面两步: var y = 1; //step 1 var x = y = typeof x; //step 2 ログイン後にコピー 第一步应该没有异议,我们直接看第二步
问题五(function f(f){ return typeof f();//"number" })(function(){ return 1; }); ログイン後にコピー 直接上注释解释: (function f(f){ //这里的f是传入的参数function(){ return 1; } //执行的结果自然是1 return typeof f(); //所以根据问题一的表格我们知道,typeof 1结果是"number" })(function(){ return 1; }); ログイン後にコピー 问题六var foo = { bar: function() { return this.baz; }, baz: 1 }; (function(){ return typeof arguments[0]();//"undefined" })(foo.bar); ログイン後にコピー 这里你可能会误以为最终结果是 问题七var foo = { bar: function(){ return this.baz; }, baz: 1 } typeof (f = foo.bar)();//"undefined" ログイン後にコピー 这和上一题是一样的问题, 问题八var f = (function f(){ return '1'; }, function g(){ return 2; })(); typeof f;//"number" ログイン後にコピー 逗号操作符 对它的每个操作对象求值(从左至右),然后返回最后一个操作对象的值 所以 问题九var x = 1; if (function f(){}) { x += typeof f; } x;//"1undefined" ログイン後にコピー 这个问题的关键点,我们在问题二中谈到过, 问题十var x = [typeof x, typeof y][1]; typeof typeof x;//"string" ログイン後にコピー
问题十一(function(foo){ return typeof foo.bar;//"undefined" })({ foo: { bar: 1 } }); ログイン後にコピー 这是个纯粹的视觉诡计,上注释 (function(foo){ //这里的foo,是{ foo: { bar: 1 } },并没有bar属性哦。 //bar属性是在foo.foo下面 //所以这里结果是"undefined" return typeof foo.bar; })({ foo: { bar: 1 } }); ログイン後にコピー 问题十二(function f(){ function f(){ return 1; } return f();//2 function f(){ return 2; } })(); ログイン後にコピー 通过 (function f(){ function f(){ return 1; } function f(){ return 2; } return f(); })(); ログイン後にコピー 问题十三function f(){ return f; } new f() instanceof f;//false ログイン後にコピー 当代码
于是,我们这里的 问题十四with (function(x, undefined){}) length;//2 ログイン後にコピー
OK,现在我们来看,由于 写在最后有人觉得这些题坑爹,也有人觉得开阔了眼界,见仁见智吧。但有一件事是真的,无论你是否坚定的实践派,缺了理论基础,也铁定走不远 - 你永远不会见到哪个熟练的技术工人突然成了火箭专家。 看文档、读标准、结合实践,才是同志们的决胜之道。 以上就是关于14 个折磨人的 JavaScript 面试题的代码示例详细分析的内容,更多相关内容请关注PHP中文网(www.php.cn)!
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
![]() ホットAIツール![]() Undresser.AI Undressリアルなヌード写真を作成する AI 搭載アプリ ![]() AI Clothes Remover写真から衣服を削除するオンライン AI ツール。 ![]() Undress AI Tool脱衣画像を無料で ![]() Clothoff.ioAI衣類リムーバー ![]() AI Hentai GeneratorAIヘンタイを無料で生成します。 ![]() 人気の記事
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1 か月前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最高のグラフィック設定
1 か月前
By 尊渡假赌尊渡假赌尊渡假赌
アサシンのクリードシャドウズ:シーシェルリドルソリューション
3週間前
By DDD
Windows11 KB5054979の新しいものと更新の問題を修正する方法
2週間前
By DDD
Will R.E.P.O.クロスプレイがありますか?
1 か月前
By 尊渡假赌尊渡假赌尊渡假赌
![]() ホットツール![]() メモ帳++7.3.1使いやすく無料のコードエディター ![]() SublimeText3 中国語版中国語版、とても使いやすい ![]() ゼンドスタジオ 13.0.1強力な PHP 統合開発環境 ![]() ドリームウィーバー CS6ビジュアル Web 開発ツール ![]() SublimeText3 Mac版神レベルのコード編集ソフト(SublimeText3) ![]() ホットトピック
Gmailメールのログイン入り口はどこですか?
![]() ![]()
CakePHP チュートリアル
![]() ![]()
Steamのアカウント名の形式は何ですか
![]() ![]()
NYTの接続はヒントと回答です
![]() ![]() ![]() 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の使用 ![]() JavaScript は Web 開発で広く使用されているプログラミング言語であり、WebSocket はリアルタイム通信に使用されるネットワーク プロトコルです。 2 つの強力な機能を組み合わせることで、効率的なリアルタイム画像処理システムを構築できます。この記事では、JavaScript と WebSocket を使用してこのシステムを実装する方法と、具体的なコード例を紹介します。まず、リアルタイム画像処理システムの要件と目標を明確にする必要があります。リアルタイムの画像データを収集できるカメラ デバイスがあるとします。 ![]() |