1. 首页
  2. 生活常识
  3. undefined是什么意思(undefeated是什么意思)

undefined是什么意思(undefeated是什么意思)

简介:关于undefined是什么意思(undefeated是什么意思)的相关疑问,相信很多朋友对此并不是非常清楚,为了帮助大家了解相关知识要点,小编为大家整理出如下讲解内容,希望下面的内容对大家有帮助!
如果有更好的建议或者想看更多关于生活常识技术大全及相关资讯,可以多多关注茶馆百科网。

作者| FullStack。咖啡馆

源|在前面的顶部

根据Stack Overflow的2018年年度调查,JavaScript连续六年成为最常用的编程语言。因此,让我们面对现实吧,JavaScript已经成为全栈开发技能的基石,在全栈开发面试中,不可避免地会出现与JavaScript相关的问题。FullStack。Cafe整理了最常见的JavaScript面试问题和答案,希望能帮助读者找到下一份理想的工作。

问题1:JavaScript中的强制转换是什么?

在JavaScript中,两种不同内置类型之间的转换称为强制转换。JavaScript中的强制转换有两种形式:显式和隐式。

下面是一个显式强制转换的例子:

Var a='42';var b=Number(a);一个;//' 42 ' b;//42——这是一个数字!下面是一个隐式强制转换的例子:

Var a='42';Var b=a * 1;//'42'隐式转换为42 a;//' 42 ' b;//42——这是一个数字!Q2: JavaScript中的作用域是什么意思?

难点:在JavaScript中,每个函数都有自己的作用域。作用域基本上是变量的集合,以及如何按名称访问它们的规则。只有函数中的代码才能访问函数作用域中的变量。

同一作用域中的变量名必须是唯一的。一个作用域可以嵌套在另一个作用域中。如果一个作用域嵌套在另一个作用域中,则最内层作用域中的代码可以访问另一个作用域中的变量。

Q3:解释JavaScript中的等式。

难点:JavaScript中有严格比较和强制转换比较:

如果不允许强制转换,严格比较(例如===)以检查两个值是否相等;抽象比较,如==,检查两个值是否相等,如果强制转换是允许的。Var a='42';Var b=42;A==b;//true===b;一些简单的规则:

如果所比较的值中的任何一个可能为真或假,则使用===,而不是==;如果要比较的任何值是这些特定值(0,""或[]),则使用===,而不是==;在其他情况下,使用==是安全的。它不仅是安全的,而且在许多情况下,它简化了代码并提高了代码的可读性。Q4:解释回调函数是什么,并提供一个简单的例子。

难点:回调函数是一种可以作为参数传递给另一个函数并在某些操作完成后执行的函数。下面是一个简单回调函数的示例,它在某些操作完成后向控制台打印一条消息。

函数modifyArray(arr, callback) var arr=[1,2,3,4,5];modifyArray(r, function());问题5:use strict是做什么的?

困难:use strict出现在JavaScript代码或函数的顶部,可以帮助您编写更安全的JavaScript代码。如果您不正确地创建了一个全局变量,它将抛出一个错误来警告您。例如,下面的程序将抛出一个错误:

这将抛出一个错误,因为x没有定义,并且在全局作用域中用一些值赋给它,使用strict是不允许的。下面的小改动修复了这个错误:

函数doSomething(val) Q6:在JavaScript中解释null和undefined。

JavaScript中有两种基本类型:null和undefined。它们意味着不同的东西:

尚未初始化的东西:undefined;当前不可用的:null。Q7:编写一个函数完成以下任务。

难度:var addSix=createBase(6);addSix (10);//返回16addSix(21);你可以创建一个闭包来保存传递给createBase的值。返回的内部函数是在外部函数中创建的,内部函数变成了一个闭包,可以访问外部函数中的变量,在本例中是变量baseNumber。

函数createBase(baseNumber)}var addSix=createBase(6);addSix (10);addSix (21);Q8:解释JavaScript中的值和类型。

困难:JavaScript有类型值,但没有类型变量。JavaScript提供了几种内置类型:

stringnumberboooleannull和undefinedojectsymbol (ES6新)Q9:解释事件气泡和如何停止它?

困难:事件冒泡是当嵌套最多的元素触发一个事件时,该事件会按照嵌套顺序在父元素上触发。

防止事件冒泡的一种方法是使用event。cancelBubble或event.stopPropagation() (ie9以下)。

问题10:let关键字在JavaScript中的用途是什么?

困难:除了在函数级声明变量,ES6还允许你使用let关键字在代码块中声明变量。

问11:怎样核对一个数字是否为整数?

难度:一个非常简单的方法来检查一个数字是小数还是整数是取它的模1,看看它是否有余数。

console.log(isInt(4));//trueconsole.log (isInt (12.2));falseconsole.log (isInt (0.3));//falseQ12:什么是IIFE(调用函数表达式立即)?

难点:这是一个立即调用的函数表达式(IIFE)。该函数在创建后立即执行:

(函数IIFE ()) ();//'你好!这种模式通常用于避免污染全局命名空间,因为IIFE中的所有变量(像任何其他普通函数一样)在其作用域之外是不可见的。

问题13:如何比较JavaScript中的两个对象?

难点:对于两个非原语值,例如两个对象(包括函数和数组),==和===之间的比较只检查它们的引用是否匹配,而不检查实际引用。

例如,默认情况下,强制将数组转换为字符串,并且使用逗号将数组的所有元素连接起来。因此,当比较==时,具有相同内容的两个数组将不相等:

Var a=[1,2,3];Var b=[1,2,3];Var c='1,2,3';A==c;//true==c;//true==b;对于对象的深度比较,您可以使用deep-equal库,或者您可以实现自己的递归比较算法。

Q14:你能解释一下ES5和ES6的区别吗?

难点:ECMAScript 5 (ES5): ECMAScript的第五版,于2009年标准化。该标准在所有现代浏览器中都完全实现。ECMAScript 6 (ES6)或ECMAScript 2015 (ES2015): ECMAScript的第6版,于2015年标准化。该标准已经在大多数现代浏览器中部分实现。以下是ES5和ES6之间的一些主要区别:

箭头函数和字符串插值:const greetings=(name)=';}const greetings=name=' hello $ ';常量在很多方面与其他语言中的常量相同,但有一些注意事项。常量表示对值的“固定引用”。有了常量,你可以改变变量引用的对象的属性,但是你不能改变引用本身。

const NAMES=[];NAMES.push(“吉姆”);console.log(名字。长度===1);//trueNAMES=['Steve', 'John'];//错误块作用域变量。新的ES6关键字let允许开发人员为块级作用域声明变量。Let不像var那样被提升。

默认参数允许我们用默认值初始化函数。如果省略或未定义参数,则使用默认值,这意味着null是有效的。

* (a, b=2);把(5);ES6引入了对类(关键字class)、构造函数(关键字构造函数)和用于继承的extend关键字的支持。

为…的of运算符of语句创建一个遍历可迭代对象的循环。

对象合并的Spread操作const obj1=const obj2=const obj3=promisepromise提供了一种处理异步操作结果的机制。您可以使用回调来达到同样的目的,但是promise通过方法链接和干净的错误处理带来了更高级别的可读性。

const isGreater=(a, b)=else})}isGreater(1, 2).then(result=)。catch(result=) const myModule=}导出默认myModule;导出默认mymodule;从'./myModule'中导入myModule;问题15:解释JavaScript中“未定义”和“未定义”的区别。

困难:在JavaScript中,如果你尝试使用一个不存在且尚未被声明的变量,JavaScript将抛出错误“var name is not defined”,脚本将停止运行。但是如果你使用typeof undeclared_variable,它将返回undefined。

在进一步讨论之前,让我们先了解声明和定义之间的区别。

"var x"代表一个声明,因为你没有定义它的值是什么,你只是声明它存在。

var x;//声明xconsole.log(x);未定义的“var x=1”既是声明又是定义(我们也可以说它是初始化的),x变量的声明和赋值是一个接一个发生的。在JavaScript中,每个变量声明和函数声明都被带到当前作用域的顶部,然后赋值,这个过程被称为提升(hoist)。

当试图访问已声明但未定义的变量时,会发生未定义错误。

var x;//声明if(typeof x==='undefined') //当我们试图引用一个既没有声明也没有定义的变量时,将返回true。

console.log (y);//输出:ReferenceError: y is not definedQ16:匿名函数和命名函数有什么区别?

难度:var foo=function();Var x=函数bar();foo ();//实际执行函数x();问题17:Javascript中的“闭包”是什么?例如呢?

难点:闭包是在另一个函数(称为父函数)中定义的函数,并且可以访问在父函数作用域中声明和定义的变量。

闭包可以在三个范围内访问变量:

在自己的作用域中声明的变量;父函数中声明的变量;在全局作用域中声明的变量。var globalVar='abc';//函数outerFunction (outerArg))(5);//使用5作为参数//outerFunction结束作用域})(7);innerFunction是定义在outerFunction中的闭包,它允许访问在outerFunction作用域中声明和定义的所有变量。此外,闭包可以访问全局命名空间中声明的变量。

以上代码的输出将是:

outerArg=7outerFuncVar=xinnerArg=5innerFuncVar=yglobalVar=abcQ18:我如何在JavaScript中创建私有变量?

难点:要在JavaScript中创建不可修改的私有变量,需要将它们创建为函数中的局部变量。即使调用了函数,也不能在函数外部访问该变量。例如:

Function func() console.log(priv);要访问这个变量,需要创建一个返回私有变量的辅助函数。

函数func()}var getPriv=func();console.log (getPriv ());//=secret codeQ19:解释原型设计模式。

难点:原型模式可以用来创建新对象,但是它不是创建未初始化的对象,而是创建使用原型(或样本)对象的值初始化的对象。原型模式也称为属性模式。

构造型模式对于初始化其值与数据库中的默认值匹配的业务对象非常有用。原型对象中的默认值被复制到新创建的业务对象中。

经典编程语言很少使用构造型模式,但是JavaScript,一种原型语言,在构造新对象及其原型时使用它。

确定给定字符串是否同构。

难点:如果两个字符串是同质的,那么字符串A中出现的所有字符都可以替换为另一个字符来获得字符串B,并且必须保持字符的顺序。字符串A中的每个字符必须与字符串B中的每个字符一一对应。

Paper和title将返回true。蛋与悲归假。DGG和add将返回true。isIsomorphic(“蛋”,“添加”);//trueisIsomorphic('paper', 'title');//true isomorphic ('kick', 'side');//falsefunction isIsomorphic(firstString, secondString);For (var I=0;我firstString.length;i) else if (letterMap[letterA] !==letterB)} //迭代后,如果满足条件则返回true。//它们是同构的。返回true;Q21:“Transpiling”是什么意思?

困难:您无法填充添加到语言中的新语法。因此,最好使用能够将新代码转换为旧等效代码的工具。这个过程通常被称为编译,转换编译过程。

通常,您可以在构建过程中添加转译器,类似于linter或minifier。有许多伟大的转换器可供选择:

巴别塔:将ES6转换为ES5Traceur:将ES6, ES7转换为ES5Q22:“this”关键字是如何工作的?请提供一些代码示例。

函数foo() var bar='global';Var obj1=;Var obj2=;foo ();//“全球'obj1.foo ();//obj1'foo。调用(obj2);//'obj2'new foo();//undefinedQ23:我如何添加自定义方法到一个数组对象,使以下代码运行?

难度:var arr=[1,2,3,4,5];Var avg=arr.average();console.log (avg);JavaScript不是基于类的,而是基于原型的。这意味着每个对象都链接到另一个对象(即对象的原型),并继承原型对象的方法。您可以跟踪每个对象的原型链,直到到达一个没有原型的空对象。我们需要通过修改Array原型来向全局Array对象添加方法。

Array.prototype.average=function();//将sum除以元素个数,返回sum/this.length;}var arr=[1,2,3,4,5];Var avg=arr.average();console.log (avg);//=3Q24:什么是提升在JavaScript?

难度:提升(提升)是JavaScript解释器将所有变量和函数声明移动到当前作用域顶部的操作。有两种类型的促销:

无论var(或函数声明)出现在作用域中的哪个位置,它都属于整个作用域,并且可以在该作用域中的任何位置访问。

Var a=2;foo ();//函数foo() console.log(a)可以被调用,因为'foo()'声明是'提升的';//2Q25:下面代码的输出是什么?

难度:0.1 0.2===0.3由于浮点数的内部表示,此代码的输出为假。0.1 0.2不完全是0.3,实际结果是0.30000000000000004。解决这个问题的一种方法是在对小数进行算术运算时将结果四舍五入。

Q26:描述揭示模块模式。

难点:揭示模块模式是模块模式的一种变体,用于维护封装并公开对象中返回的一些变量和方法。如下:

var expose=(function() var methodToExpose=function() var otherMethodIWantToExpose=function() return;}) ();Exposer.first ();//输出:This is a method I want to expose!Exposer.second ();//输出:在私有方法内部!Exposer.methodToExpose;undefined的一个明显缺点是它不能引用私有方法。

英语原

https://www.fullstack.cafe/blog/top-26-javascript-interview-questions-and-answers-in-2019

本文主要介绍了关于undefined是什么意思(undefeated是什么意思)的相关养殖或种植技术,生活常识栏目还介绍了该行业生产经营方式及经营管理,关注生活常识发展动向,注重系统性、科学性、实用性和先进性,内容全面新颖、重点突出、通俗易懂,全面给您讲解生活常识技术怎么管理的要点,是您生活常识致富的点金石。
以上文章来自互联网,不代表本人立场,如需删除,请注明该网址:http://23.234.50.4:8411/article/1471735.html