79.什么是isNaN?
isNaN() 函数用于确定一个值是否为非法数字(Not-a-Number)。即,如果该值等于 NaN,则此函数返回 true。否则返回false。
isNaN('Hello') //true
isNaN('100') //false
80.未声明变量和未定义变量有什么区别?
以下是未声明和未定义变量之间的主要区别,
undeclared undefined
这些变量不存在于程序中且未声明 这些在程序中声明但没有赋值的变量
如果您尝试读取未声明变量的值,则会遇到运行时错误 如果您尝试读取未定义变量的值,则会返回未定义值。
81.什么是全局变量?
全局变量是那些在整个代码长度内都可用的变量,没有任何作用域。var 关键字用于声明局部变量,但如果省略它,它将成为全局变量
msg = "Hello" // var 缺失,它成为全局变量
82.全局变量有什么问题?
全局变量的问题是局部作用域和全局作用域的变量名冲突。调试和测试依赖全局变量的代码也很困难。
83.什么是 NaN 属性?
NaN 属性是一个全局属性,表示“非数字”值。即,它表示一个值不是一个合法的数字。在程序中很少使用 NaN,但在少数情况下可以用作返回值
Math.sqrt(-1)
parseInt("Hello")
84.isFinite 函数的目的是什么?
isFinite() 函数用于确定一个数是否是一个有限的合法数。如果值为 +infinity、-infinity 或 NaN(非数字),则返回 false,否则返回 true。
isFinite(Infinity); // false
isFinite(NaN); // false
isFinite(-Infinity); // false
isFinite(100); // true
85.什么是event flow(事件流)?
事件流是在网页上接收事件的顺序。当您单击嵌套在各种其他元素中的元素时,在您的单击实际到达其目的地或目标元素之前,它必须首先触发其每个父元素的单击事件,从全局窗口对象的顶部开始。
事件流有两种方式
从上到下(事件捕获)
从下到上(事件冒泡)
86.什么是event bubbling(事件冒泡)?
事件冒泡是一种事件传播,其中事件首先在最内层的目标元素上触发,然后在同一嵌套层次结构中的目标元素的祖先(父级)上依次触发,直到到达最外层的 DOM 元素。
87.什么是event capturing(事件捕获)?
事件捕获是一种事件传播,其中事件首先被最外层元素捕获,然后在同一嵌套层次结构中的目标元素的后代(子级)上连续触发,直到它到达最内层 DOM 元素。
88.你如何使用 JavaScript 提交表单?
您可以使用 JavaScript 提交表单,使用 document.form[0].submit()。使用 onsubmit 事件处理程序提交所有表单输入的信息
function submit() {
document.form[0].submit();
}
89.你如何找到操作系统详细信息?
window.navigator 对象包含有关访问者浏览器操作系统详细信息的信息。一些操作系统属性在平台属性下可用,
console.log(navigator.platform);
90.document load 和 DOMContentLoaded 事件有什么区别?
DOMContentLoaded当初始 HTML 文档完全加载并解析完毕,无需等待资产(样式表、图像和子框架)完成加载时,将触发该事件。而当整个页面加载时会触发 load 事件,包括所有依赖资源(样式表、图像)。
91.Native 、Host 和User objects之间有什么区别?
Native objects是 ECMAScript 规范定义的 JavaScript 语言的一部分的对象。例如,ECMAScript 规范中定义的 String、Math、RegExp、Object、Function 等核心对象。
Host objects是浏览器或运行时环境(节点)提供的对象。例如,窗口、XmlHttpRequest、DOM节点等被视为宿主对象。
User objects是在 javascript 代码中定义的对象。例如,为配置文件信息创建的用户对象
92.用于调试 JavaScript 代码的工具或技术有哪些?
您可以使用以下工具或技术来调试 javascript
Chrome 开发者工具
debugger statement
较老的 console.log 语句
93.promises相对于回调的优缺点是什么?
优点:
1.它避免了不可读的回调地狱
2.使用 .then() 轻松编写顺序异步代码
3.使用 Promise.all() 轻松编写并行异步代码
4.解决回调的一些常见问题(回调太晚、太早、多次和吞下错误/异常)
缺点:
1.它编写了少量的复杂代码
2.如果不支持 ES6,你需要加载一个 polyfill
94.attribute 和 property有什么区别?
Attributes 在 HTML 标记上定义,而properties 在 DOM 上定义。例如,下面的 HTML 元素有两个attributes 类型和值,
<input type="text" value="Name:">
您可以检索attribute 值如下,
const input = document.querySelector('input');
console.log(input.getAttribute('value')); // Good morning
console.log(input.value); // Good morning
将文本字段的值更改为“Good evening”后,它变得像
console.log(input.getAttribute('value')); // Good morning
console.log(input.value); // Good evening
95.什么是 same-origin policy(同源策略)?
同源策略是一种防止 JavaScript 跨域边界发出请求的策略。源定义为 URI 方案、主机名和端口号的组合。如果启用此策略,则它会阻止一个页面上的恶意脚本使用文档对象模型 (DOM) 获取对另一个网页上的敏感数据的访问权限。
96.void 0的目的是什么?
void(0) 用于防止页面刷新。这将有助于消除不需要的副作用,因为它将返回未定义的原始值。它通常用于使用 href="JavaScript:Void(0);" 的 HTML 文档。 一个元素内。 即,当您单击链接时,浏览器会加载一个新页面或刷新同一页面。 但是使用此表达式将阻止这种行为。
例如,下面的链接在不重新加载页面的情况下通知消息
<a href="JavaScript:void(0);" onclick="alert('Well done!')">Click Me!</a>
97.JavaScript 是编译型语言还是解释型语言?
JavaScript 是一种解释型语言,而不是一种编译型语言。浏览器中的解释器读取 JavaScript 代码,解释每一行,然后运行它。如今,现代浏览器使用一种称为即时 (JIT) 编译的技术,该技术在 JavaScript 即将运行时将其编译为可执行的字节码。
98.JavaScript 是区分大小写的语言吗?
是的,JavaScript 是一种区分大小写的语言。语言关键字、变量、函数和对象名称以及任何其他标识符必须始终使用一致的大写字母输入。
99.Java 和 JavaScript 之间有什么关系吗?
不,它们完全是两种不同的编程语言,彼此没有任何关系。但是它们都是面向对象的编程语言,并且像许多其他语言一样,它们的基本功能(if、else、for、switch、break、continue 等)遵循类似的语法。
具体区别可以查看我这篇文章:
https://haiyong.blog.csdn.net/article/details/117409345
100.什么是event?
event是发生在 HTML 元素上的“事物”。在 HTML 页面中使用 JavaScript 时,JavaScript 可以react处理这些事件。HTML 事件的一些示例是,
网页已完成加载
输入字段已更改
按钮被点击
让我们描述一下按钮元素的点击事件的行为,
<!doctype html> <html> <head> <script> function greeting() { alert('Hello! Good morning'); } </script> </head> <body> <button type="button" onclick="greeting()">Click me</button> </body> </html>
101.谁创造了 JavaScript ?
JavaScript 是由 Brendan Eich 于 1995 年在 Netscape Communications 期间创建的。 最初它是以 Mocha 的名义开发的,但后来在 Netscape 的测试版中首次发布时,该语言被正式称为 LiveScript。当时Sun公司和网景公司有合作,SUN公司注册了“JavaScript”商标,两公司协商后把LiveScript改成了现在的JavaScript。
102.preventDefault 方法有什么用?
如果事件是可取消的,则 preventDefault() 方法会取消该事件,这意味着属于该事件的默认操作或行为将不会发生。例如,单击提交按钮时阻止表单提交和单击超链接时阻止打开页面 URL 是一些常见用例。
document.getElementById("link").addEventListener("click", function(event){ event.preventDefault(); });