JSインタビューの質問:
1.javascriptのtypeofによって返されるデータ型
string
、boolean
、number
、undefined
、function
、object
2.キャストの三種類と暗黙的型変換の二種類に言及?
必須(parseInt
、parseFloat
、number
)暗黙の(== === + -
)
3. split()とjoin()の違いは
split()
、文字列を配列にカットjoin()
することです。つまり、配列を文字列に変換します。
4.配列メソッドpop()、push()、unshift()、shift()
push()
最後に追加pop()
テール削除unshift()
ヘッド追加shift()
ヘッダーの削除
5.IEおよび標準の下で互換性のある書き込み方法は何ですか
var ev = ev || window.event
document.documentElement.clientWidth || document.body.clientWidth
Var target = ev.srcElement||ev.target
6.ajaxリクエスト時のgetとpostの違い
get
それはurl
バックpost
仮想キャリア内部にget
サイズ制限があります(送信できるパラメーターはごくわずかです)post
よりget
セキュリティ- さまざまなアプリケーション、データの要求と送信
7.call和apply地区ВObject.call
(this、obj1、obj2、obj3)Object.apply(this、arguments)
apply
そしてcall
唯一の相違点は、第二の転送モードの異なるパラメータが、ということであるapply
2番目のパラメータは配列である、としなければならないcall
パラメータのリストを通過させます。
8.ajaxリクエストが
使用されたときにjsonデータを解析する方法JSON.parse
9.イベント委任とは何ですか?
イベントバブリングの原則を使用して、代わりに独自のトリガーされたイベントを親要素によって実行できるようにします。
10.クロージャとは何か、その特性とは何か、そしてそれがページに与える影響は何か。
クロージャは他の関数の内部変数を読み取ることができる関数であり、そのため関数はGCメカニズムによってリサイクルされません。クロージャを使いすぎると、メモリリークが発生しやすくなります。
なぜポータルを閉じるのですか
11.イベントがバブリングするのを防ぐ方法
- すなわち:バブリングを停止し
ev.cancelBubble = true
ます; - 非IE
ev.stopPropagation()
;
12.デフォルトイベントをブロックする方法
- 1.1。
return false
- 2
ev.preventDefault()
.;
13.連絡方法への追加、削除、置換、挿入
1.新しいノードを作成します
// 创建一个具体的元素
createElement();
// 创建一个文本节点
createTextNode();
2.追加、削除、交換、挿入
appendChild(); //添加
removeChild(); //移除
replaceChild(); //替换
insertBefore(); //插入
3.検索
//通过标签名称
getElementsByTagName();
//通过元素的Name属性的值
getElementsByName();
//通过元素Id,唯一性
getElementById();
14. jsonpの原理と、タグとコールバック関数を
動的に作成することが実際のajaxではない理由を説明しscript
ます
Ajax
ページの更新要求データ操作はありませんか
15.ドキュメントロードとドキュメントレディの違いは
document.onload
、構造とスタイル、外観js
、画像がロードされた後にのみ実行されることです。js
document.ready
dom
ツリーは、メソッドの実装上で作成された、この方法では、ネイティブではないjquery
が$().ready(function)
16.」「と」= "違い
==
はタイプを自動的に変換し、それが等しいかどうかを判断し
===
ます。タイプは自動的に変換されません。比較に進むだけです。
17.関数宣言と関数式の違いは何ですか?
ではJavscript
、パーサーは、実行環境にデータをロードするときに、関数宣言と関数式を同等に扱いません。パーサーは、コードを実行する前に、まず関数宣言を読み取り、使用可能(アクセス可能)にします。関数式については、パーサーまで待機する必要があります。実際に解析および実行される前に、コードが配置されているコード行まで実行されます。
18.スコープのコンテキストとこれを理解するには、次のコードを参照してください。
var User = {
count: 1,
getCount: function() {
return this.count;
}
};
console.log(User.getCount()); // 1
var func = User.getCount;
console.log(func()); // 是1和undefined
`func`是在`window`的上下文中被执行的,所以不会访问到`count`属性。
19.以下のコードを見て、出力結果を示します。
for(var i = 1; i <= 3; i++){
//建议使用let 可正常输出i的值
setTimeout(function(){
console.log(i);
},0);
};
4 4 4。
// 原因:Javascript事件处理器在线程空闲之前不会运行。
20. DOMノードがクリックされたときに、関数を実行できるようにしたいのですが、どうすればよいですか?
box.onlick= function(){
}
box.addEventListener("click",function(){
},false);
<button οnclick="box()"></button>
21. Javascriptのイベントフローモデルとは何ですか?
“事件冒泡”:
イベントは最も特定の要素によって受信され始め、次に
“事件捕捉”:
イベントはレベルごとに上向きに伝播されます。イベントは最初に最も特定されていないノードによって受信され、次にレベルごとに下向きに伝播されます。最も具体的な
“DOM事件流”:
3つの段階へのレベル:イベントキャプチャ、ターゲットステージ、イベントバブリング
22.次のコードを見て、出力は何ですか?理由を説明してください。
var a = null;
alert(typeof a);
// object
説明:これJavaScript
は、開始以来のケースです。これnull
は、値が1つしかないデータ型であり、この値はnull
です。nullポインタオブジェクトを表すため、typeof
テストはを返し”object”
ます。
23.文字で始まり、数字、アンダースコア、文字が続く文字列を決定します。長さは6〜30です。
var reg=/^[a-zA-Z]\w{5,29}$/;
24.次のコードに答えてください、alertの価値は何ですか?
var a = 100;
function test() {
alert(a);
a = 10; //去掉了var 就变成定义了全局变量了
alert(a);
}
test();
alert(a);
// 正确答案是:100, 10, 10
25. javaScriptの2つの変数範囲の違いは何ですか?
- グローバル変数:現在のページで有効
- ローカル変数:関数メソッド内で有効
26. nullとundefinedの違いは?
null
これは、数値に変換される「none」を表すオブジェクトです0
。数値に変換されるundefined
「none」を表す元の値ですNaN
。宣言された変数が初期化されていない場合、変数のデフォルト値undefined
。null
まだ存在しないオブジェクトを示すために使用されます
undefined
「欠落値」を示します。つまり、ここに値があるはずですが、まだ定義されていません。一般的な使用法は次のとおりです。
1.変数が宣言されているが割り当てられていない場合、それはundefined
。に等しくなります。
2.関数を呼び出すときに、指定する必要のあるパラメーターが指定されておらず、パラメーターはundefined
。に等しい。
3.オブジェクトには属性が割り当てられておらず、属性の値はundefined
です。
4.関数が値を返さない場合、デフォルトで戻りますundefined
。
null
「オブジェクトなし」を意味します。つまり、そこに値があってはなりません。一般的な使用法は次のとおり
です。1。関数のパラメーターとして、関数のパラメーターがオブジェクトではないことを意味します。
2.オブジェクトプロトタイプチェーンの終わりとして。
27. new演算子は正確に何をしますか?
1。空のオブジェクトを作成します。この変数はオブジェクトを参照し、同時に関数のプロトタイプを継承します。
2.これによって参照されるオブジェクトにプロパティとメソッドが追加されます。
3.新しく作成されたオブジェクトはこれによって参照され、最後にこれを暗黙的に返します。
28.jsでの読み込みを遅らせる方法は何ですか?
defer
とasync
- 動的に作成されます
DOM
(作成モードscript
、DOM
中央に挿入、ロードcallBack
) - jsをオンデマンドで非同期にロードする
29.使用中のFlashとAjaxの長所と短所をどのように選択しますか?
フラッシュajaxの比較
1.Flash
マルチメディア、ベクターグラフィック、アクセスマシンの処理に適していCSS
ます。テキスト処理が不十分なため、検索が容易ではありません。
2.ajax
はいCSS
、テキストのサポートは非常に優れています。検索をサポートします。マルチメディア、ベクターグラフィック、マシンアクセスが不十分です。
共通点:サーバーでのメッセージの非更新配信、ユーザーのオフラインおよびオンラインステータス、DOMの操作
30.ループを使用せず、長さ100の配列を作成します。各要素の値は、その添え字と同じです。
new Array(100).fill(0).map((_, c) => c)
31ページのすべてのチェックボックスを取得するにはどうすればよいですか?(サードパーティのフレームワークを使用しません)
var inputs = document.getElementsByTagName("input"); // 获取所有的input标签对象
var checkboxArray = []; // 初始化空数组,用来存放checkbox对象。
for(var i=0;i<inputs.length;i++){
var obj = inputs[i];
if(obj.type=='checkbox'){
checkboxArray.push(obj);
}
}
32.文字列の前後のスペースをクリアする関数を記述します。(すべてのブラウザと互換性があります)
String.prototype.trim= function(){
return this.replace(/^\s+/,"").replace(/\s+$/,"");
}