ホームページ > ウェブフロントエンド > jsチュートリアル > 50 の JavaScript インタビューと回答 (コレクション)

50 の JavaScript インタビューと回答 (コレクション)

青灯夜游
リリース: 2020-07-30 15:47:53
転載
17520 人が閲覧しました

50 の JavaScript インタビューと回答 (コレクション)

質問 1: Java と JavaScript の違いは何ですか

Java JavaScript
Java は OOP プログラミング言語です。 JavaScript は OOP スクリプト言語です。
仮想マシンまたはブラウザで実行されるアプリケーションを作成します。 コードはブラウザまたはノード環境で実行されます。
Java コードをコンパイルする必要があります。 JS コードはすべてテキスト形式です。

質問 2: Javascript とは何ですか

JavaScript は、他の静的な Build 対話機能を HTML ページに使用できるようにする、オブジェクト指向機能を備えた軽量の解釈型プログラミング言語です。 。この言語の共通コアは、Netscape、Internet Explorer、およびその他の Web ブラウザーに組み込まれています。

おすすめ関連記事:2020年最も充実したjs面接質問集(最新)

質問 3: JS はどのようなデータ型をサポートしますか?

50 の JavaScript インタビューと回答 (コレクション)

JS でサポートされるデータ型:

●未定義

#●Null

##●ブール値

#●文字列

##●シンボル

##●数値

# オブジェクト

質問 4: JavaScript の特徴は何ですか

次のとおりです。 JS の特徴:

● JS は軽量でインタープリタ型のプログラミング言語です。 50 の JavaScript インタビューと回答 (コレクション)

# ネットワーク中心のアプリケーションを作成するために設計されています。

#●● 補足および統合された Java

● 補足および統合された HTML

#● オープンかつクロスプラットフォーム

質問 5: JavaScriptは大文字と小文字が区別されます

はい、JS は大文字と小文字が区別される言語です。キーワード、変数、関数名、その他の識別子は、常に一貫した大文字で使用する必要があります。 #質問 6: JS の利点は何ですか

JS を使用する次の利点:

●サーバーとのやり取りが少なくなります - ページをサーバーに送信する前にユーザー入力を検証できるため、サーバーのトラフィックが節約され、サーバーの負荷が軽減されます#● 即時フィードバック - ユーザーはページが送信されるまで待つ必要がありません。 reload 入力忘れがないか確認してください。

# 強化されたインタラクション - ユーザーがマウスでホバーするか、キーボードでアクティブ化すると応答するインターフェイス。

# リッチ インターフェイス - JS を使用してドラッグ アンド ドロップ コンポーネントとスライダーを組み込み、Web サイトにリッチなインターフェイスを提供できます。

質問 7: JS を使用してオブジェクトを作成する方法

JS はオブジェクトの概念をサポートしており、次の方法で作成できます。

var emp = {
name: "Daniel",
age: 23
};
ログイン後にコピー

質問 8: JS

JS を使用して配列を作成する方法 配列の作成も非常に簡単です:

var x = [];
var y = [1, 2, 3, 4, 5];
ログイン後にコピー

質問 9: JS の名前付き関数とは何ですか、またその定義方法:

##名前付き関数は、定義の直後にその名前を宣言し、## を使用して定義できます。 #function

キーワード:

function named(){
// write code here
}
ログイン後にコピー

質問 10: 匿名関数を変数に代入し、それをパラメータとして別の関数に渡すことは可能ですか # ##### はい。匿名関数は変数に代入でき、パラメータとして別の関数に渡すこともできます。

質問 11: JS のパラメーター オブジェクトとは何ですか、関数に渡されるパラメーターの型を取得する方法

JS 変数 argument は、関数に渡されるパラメーターを表します。

typeof

演算子を使用すると、関数に渡されるパラメーターの型を取得できます。次のとおりです:

function func(x){
console.log(typeof x, arguments.length);
}
func(); //==> "undefined", 0
func(7); //==> "number", 1
func("1", "2", "3"); //==> "string", 3
ログイン後にコピー

質問 12: JS の変数のスコープは何ですか

変数のスコープはプログラム内の領域です。 JS 変数のスコープは 2 つだけです: #● グローバル変数 - グローバル変数にはグローバル スコープがあります。つまり、JS コード内のどこでも参照できます。

# ローカル変数 - ローカル変数は、それが定義されている関数内でのみ表示され、関数パラメータは常に関数のローカル パラメータです。

質問 13: JS の "

this

" 演算子の目的は何ですか?

#this

キーワードは、それが属するオブジェクトを参照します。使用される場所に応じてさまざまな価値があります。メソッドでは、これはオーナー オブジェクトを指しますが、関数では、これはグローバル オブジェクトを指します。

質問 14: コールバックとは何ですかコールバック関数は、パラメーターまたはオプションとしてメソッドに渡される通常の JS 関数です。別の関数の実行が終了した後に実行される関数であるため、コールバックと呼ばれます。 JS では、関数はオブジェクトであるため、関数はパラメーターとして関数を受け入れることができ、他の関数によって返すことができます。

#質問 15: クロージャとは何ですか?例えば#########

クロージャ は、現在のスコープの外で定義された変数が内部スコープ内でアクセスされるたびに作成されます。これにより、内部関数から外部関数のスコープにアクセスできるようになります。 JS では、関数が作成されるたびにクロージャが作成されます。クロージャを使用するには、別の関数内で関数を定義し、それを公開するだけです。

質問 16: いくつかの組み込みメソッドとそれらが返す値を列挙してください。

#組み込みメソッドCharAt ()Concat()forEach()indexOf()pop()push()reverse()

问题17: JS中的变量命名约定是什么?

在JS中命名变量时要遵循以下规则:

  1. 咱们不应该使用任何JS保留关键字作为变量名。例如,breakboolean变量名无效。
  2. JS 变量名不应该以数字(0-9)开头。它们必须以字母或下划线开头。例如,123name是一个无效的变量名,但123namename123是一个有效的变量名。
  3. JS 变量名区分大小写。例如,Testtest是两个不同的变量。

问题18:TypeOf 运算符是如何工作的

typeof运算符用于获取其操作数的数据类型。 操作数可以是文字或数据结构,例如变量,函数或对象。 它是一个一元运算符,放在它的单个操作数之前,可以是任何类型。 它的值是一个字符串,表示操作数的数据类型。

问题19:如何使用 JS 创建 cookie

创建cookie的最简单方法是为document.cookie对象分配一个字符串值,如下所示:

document.cookie = "key1 = value1; key2 = value2; expires = date";
ログイン後にコピー

问题20:如何使用JS读取cookie

读取cookie就像写入cookie一样简单,因为document.cookie对象的值是cookie

 ● document.cookie的值是由分号分隔的name=value对的列表,其中name是cookie的名称,value是其字符串值。

 ● 可以使用split()方法将字符串分解为键和值。

问题21:如何使用 JS 删除 cookie

如果要删除cookie以便后续尝试读取cookie,则只需将过期日期设置为过去的时间。 咱们应该定义cookie路径以确保删除正确的cookie。 如果未指定路径,某些浏览器将不允许咱们删除cookie

问题22:Attribute 和Property之间有什么区别

 ● Attribute——提供关于元素的更多细节,如id、类型、值等。

 ● Property —— 分配给属性的值,如type =“text”value ='Name'等。

问题23:列出在JS代码中访问HTML元素的不同方式

下面是在JS代码中访问 html 元素的方法列表:

 ● getElementById(‘idname’): 按id名称获取元素

 ● getElementsByClass(‘classname’): 获取具有给定类名的所有元素

 ● getElementsByTagName(‘tagname’): 获取具有给定标记名称的所有元素

 ● querySelector(): 此函数采用css样式选择器并返回第一个选定元素

问题24:JS代码在HTML文件中可以以多少种方式使用

主要有三种:

 ● 行内

 ● 内部

 ● 外部

行内方式:

...
<input>
...
ログイン後にコピー

内部方式:

nbsp;html>


<meta>
<script>
//声明一个函数(整个文档都可以使用)
function surprise() {
alert('恭喜你中了一百万')/*弹出框*/
}
</script>

。。。
ログイン後にコピー

外部方式:

...
<!--很多html页面都可以调用js4.js页面-->
<script>
...</script>
ログイン後にコピー

问题25:在JS中定义变量的方法有哪些

在 JS 中声明变量有三种方式:

 ● varvar 语句用于声明一个变量,咱们可以选择初始化该变量的值。例子:var a =10;变量声明在代码执行之前处理。

 ● const - 常量的值不能通过重新赋值来改变,并且不能重新声明。

 ● let - 语句声明一个块级作用域的本地变量,并且可选的将其初始化为一个值。

问题26:什么是类型化语言

类型化语言中,值与值关联,而不是与变量关联,它有两种类型:

  • 动态:在这种情况下,变量可以包含多种类型,如在JS中,变量可以取number, string 类型。
  • 静态:在这种情况下,变量只能包含一种类型,就像在Java中声明为string的变量只能包含一组字符,不能包含其他类型。

问题27:Cookie 与 Local storage 与 Session storage 区别

戻り値
指定されたインデックスの文字を返します。
2 つ以上の文字列を連結します。
配列内の各要素に対して関数を呼び出します。
指定された値が最初に出現したときに、呼び出し文字列オブジェクトのインデックスを返します。
配列から最後の要素を削除し、その要素を返します。
これは、配列の末尾に 1 つ以上の要素を追加し、配列の新しい長さを返します。
配列要素の順序を逆にします。
#機能Cookieローカルストレージセッションストレージ ##データの有効期間ストレージデータサイズサーバーと通信します使いやすさ#プログラマー自身がカプセル化する必要があります。元の Cookie インターフェイスはフレンドリーではありません。フレンドリーな生のインターフェイスは受け入れることができ、オブジェクトと配列のサポートを強化するために再カプセル化することもできます

问题28:  ‘==‘ 和 ‘===‘ 区别

==: 两边值类型不同的时候,要先进行类型转换,再比较。
===:不做类型转换,类型不同的一定不等。

一言以蔽之:==先转换类型再比较,===先判断类型,如果不是同一类型直接为false

问题29:null 和 undefined 区别

undefined是基本数据类型 表示未定义 缺少的意思。

null是引用数据类型,是对象,表示空对象

undefined是从null派生出来的  所以undefined==nulltrue

问题 30:undeclared 和 undefined 区别?

undeclared的变量是程序中不存在且未声明的变量。 如果程序尝试读取未声明变量的值,则会遇到运行时错误。undefined的变量是在程序中声明但未赋予任何值的变量,如果程序试图读取未定义变量的值,则返回undefined的值。

问题 31: 列出一些JS框架

50 の JavaScript インタビューと回答 (コレクション)

JS框架是用JavaScript编写的应用程序框架,它与控制流中的JS库不同,一些最常用的框架是:

 ● Vue

 ● Angular

 ● React

问题 32: window 与 document 的区别:

window:JS 的 window 是一个全局对象,它包含变量、函数、historylocation

document:document也位于window之下,可以视为window的属性。

问题 33: innerHTML 和 innerText 的区别

innerHTML:也就是从对象的起始位置到终止位置的全部内容,包括Html标签。

innerText:从起始位置到终止位置的内容, 但它去除Html标签

问题 34:JS中的事件冒泡是什么

事件冒泡是HTML DOM API中事件传播的一种方式,当一个事件发生在另一个元素中的一个元素中,并且两个元素都注册了该事件的句柄时。通过冒泡,事件首先由最内部的元素捕获和处理,然后传播到外部元素。执行从该事件开始,并转到其父元素。然后执行传递给父元素,以此类推,直到body元素。

问题 35:NaN 是什么

NaN 即非数值(Not a Number),NaN 属性用于引用特殊的非数字值,该属性指定的并不是不合法的数字。

NaN 属性 与 Number.Nan 属性相同。

提示: 请使用 isNaN() 来判断一个值是否是数字。原因是 NaN 与所有值都不相等,包括它自己。

问题 36:JS的原始/对象类型如何在函数中传递?

两者之间的一个区别是,原始数据类型是通过值传递的,对象是通过引用传递的。

 ● 值传递:意味着创建原始文件的副本。把它想象成一对双胞胎:他们出生的时候一模一样,但是双胞胎中的老大在战争中失去了一条腿,而老二却没有。

 ● 引用传递: 意味着创建原始文件的别名。当我妈妈叫沙雕的时候,虽然我的名字叫小智,但这并不是说我就突然就克隆了一个自己:我仍然是我,只是可以用不同名字来称呼我而已。

问题 37:如何在JS中将任意基的字符串转换为整数

parseInt(string, radix)   将一个字符串 string 转换为 radix 进制的整数, radix 为介于2-36之间的数,如下:

parseInt("4F", 16)
ログイン後にコピー

问题 38:2+5+ '3'的结果是什么

由于25是整数,它们将以数字形式相加。因为3是一个字符串,它将与 7 拼接,结果是73。

问题 39:export 和 import 是什么

importexport有助于咱们编写模块化JS代码。 使用importexport,咱们可以将代码拆分为多个文件,如下:

//------ lib.js ------
export const sqrt = Math.sqrt;
export function square(x) {
return x * x;
}
export function diag(x, y) {
return sqrt(square(x) + square(y));
}
 
//------ main.js ------
 { square, diag } from 'lib';
console.log(square(5)); // 25
console.log(diag(4, 3)); // 5
ログイン後にコピー

问题40:JS中的“严格”模式是什么以及如何启用?

严格模式是在代码中引入更好的错误检查的一种方法。

 ● 当使用严格模式时,不能使用隐式声明的变量,或为只读属性赋值,或向不可扩展的对象添加属性。

 ● 可以通过在文件,程序或函数的开头添加“use strict”来启用严格模式

问题41:JS 中的 prompt 框是什么

提示框是允许用户通过提供文本框输入输入的框。 prompt() 方法显示一个对话框,提示访问者输入。 如果您希望用户在输入页面之前输入值,则通常会使用提示框。 弹出提示框时,用户必须在输入输入值后单击“确定”或“取消”才能继续。

问题42:下面代码的输出是什么?

var Y = 1;
if (eval(function f(){}))
{
  y += typeof F;
}
console.log(y);
ログイン後にコピー

打印1undefinedif条件语句使用eval求值,因此eval(function f(){})返回函数f(){}(为真)。因此,在if语句中,执行typeof f返回undefined,因为if语句代码在运行时执行,而if条件中的语句在运行时计算。

问题43:call 和 apply有什么区别

callapply可以用来重新定义函数的执行环境,也就是this的指向;callapply都是为了改变某个函数运行时的context,即上下文而存在的,换句话说,就是为了改变函数体内部this的指向。

call()调用一个对象的方法,用另一个对象替换当前对象,可以继承另外一个对象的属性,它的语法是:

Function.call(obj[, param1[, param2[, [,...paramN]]]]);
ログイン後にコピー

说明:call方法可以用来代替另一个对象调用一个方法,call方法可以将一个函数的对象上下文从初始的上下文改变为obj指定的新对象,如果没有提供obj参数,那么Global对象被用于obj

apply()call()方法一样,只是参数列表不同,语法:

Function.apply(obj[, argArray]);
ログイン後にコピー

说明:如果argArray不是一个有效数组或不是arguments对象,那么将导致一个TypeError,如果没有提供argArrayobj任何一个参数,那么Global对象将用作obj。

问题44:如何在JS中清空数组

有许多方法可以用来清空数组:

方法一:

arrayList = []
ログイン後にコピー

上面的代码将把变量arrayList设置为一个新的空数组。如果在其他任何地方都没有对原始数组arrayList的引用,则建议这样做,因为它实际上会创建一个新的空数组。咱们应该小心使用这种清空数组的方法,因为如果你从另一个变量引用了这个数组,那么原始的引用数组将保持不变。

方法二:

arrayList.length = 0;
ログイン後にコピー

上面的代码将通过将其length设置为0来清除现有数组。这种清空数组的方式还会更新指向原始数组的所有引用变量。 因此,当你想要更新指向arrayList的所有引用变量时,此方法很有用。

方法三:

arrayList.splice(0, arrayList.length);
ログイン後にコピー

这处方法也行,当然这种清空数组的方法也将更新对原始数组的所有引用。

方法四:

while(arrayList.length)
{
  arrayList.pop();
}
ログイン後にコピー

上面的实现也可以空数组,但通常不建议经常使用这种方式。

问题45:以下代码的输出什么

var output = (function(x)
{
  delete x;
  return x;
}
)(0);
console.log(output);
ログイン後にコピー

打印 0delete操作符用于从对象中删除属性。这里x不是一个对象,而是一个局部变量,删除操作符不影响局部变量。

问题46:以下代码的输出什么

var X = { foo : 1}; 
var output = (function() 
{ 
  delete X.foo; 
  return X.foo; 
} 
)(); 
console.log(output);
ログイン後にコピー

输出 undefineddelete操作符用于删除对象的属性。X是一个具有foo属性的对象,由于它是一个自调用函数,所以咱们将从对象X中删除foo属性。这样做之后,当咱们试图引用一个被删除的foo属性时,结果是undefined

问题47:以下代码的输出什么

var foo = function Bar()
{
  return 7;
};
typeof Bar();
ログイン後にコピー

输出将是引用错误。函数定义只能有一个引用变量作为其函数名。

问题49:为什么要将JS源文件的全部内容包装在一个函数中

这是一种越来越普遍的做法,被许多流行的JS库所采用。 这种技术围绕文件的整个内容创建一个闭包,最重要的是,它可以创建一个私有命名空间,从而有助于避免不同JS模块和库之间潜在的名称冲突。

该技术的另一个特性是允许为全局变量提供一个简单的别名,这在jQuery插件中经常使用。

问题50:JS中的转义字符是什么

JS转义字符使咱们能够在不破坏应用程序的情况下编写特殊字符。转义字符(\)用于处理特殊字符,如单引号、双引号、撇号和&号,在字符前放置反斜杠使其显示。

如:document.write("I am a \"good\" boy")

原文:https://hackr.io/blog/javascript-interview-questions

为了保证的可读性,本文采用意译而非直译。

相关学习推荐:javascript视频教程

通常、サーバーによって生成され、有効期限を設定できます。ブラウザ側で Cookie が生成された場合、デフォルトではブラウザを閉じた後に有効期限が切れます クリアしない限り永久に保存されます 現在のセッションでのみ有効であり、ページまたはブラウザを閉じるとクリアされます
約4K 通常5MB
これは毎回 HTTP ヘッダーに含まれます。大量のデータを保存するために Cookie を使用すると、パフォーマンスの問題が発生します。 これは、サーバーにのみ保存されます。
プログラマ自身がカプセル化する必要があり、元の Cookie インターフェイスはサポートされていません。フレンドリー

以上が50 の JavaScript インタビューと回答 (コレクション)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート