undefined是什么软件(软件出现undefined是什么意思)

本文主要介绍undefined是什么软件(软件出现undefined是什么意思),下面一起看看undefined是什么软件(软件出现undefined是什么意思)相关资讯。
作者|fullstack.cafe
出处|前端之巅
根据 stack overflow 的 2018 年度调查,javascript 连续六年成为最常用的编程语言。所以我们必须面对这样的现实,javascript 已经成为全栈开发技能的基石,在全栈开发面试中都会不可避免地涉及到与 javascript 有关的问题。fullstack.cafe 汇编了最常见的 javascript 面试问题和答案,希望能够帮助读者找到下一份梦想中的工作。
q1:javascript 中的强制转型(coercion)是指什么?
难度:0在 javascript 中,两种不同的内置类型间的转换被称为强制转型。强制转型在 javascript 中有两种形式:显式和隐式。
这是一个显式强制转型的例子:
var a = 42;var b = number( a );a; // 42b; // 42 是个数字!
这是一个隐式强制转型的例子:
var a = 42;var b = a * 1; // 42 隐式转型成 42 a; // 42b; // 42 是个数字!
q2:javascript 中的作用域(scope)是指什么?
难度:?在 javascript 中,每个函数都有自己的作用域。作用域基本上是变量以及如何通过名称访问这些变量的规则的集合。只有函数中的代码才能访问函数作用域内的变量。
同一个作用域中的变量名必须是唯一的。一个作用域可以嵌套在另一个作用域内。如果一个作用域嵌套在另一个作用域内,最内部作用域内的代码可以访问另一个作用域的变量。
q3:解释 javascript 中的相等性。
难度:?javascript 中有严格比较和类型转换比较:
严格比较(例如 ===)在不允许强制转型的情况下检查两个值是否相等;抽象比较(例如 ==)在允许强制转型的情况下检查两个值是否相等。var a = 42;var b = 42;a == b; // truea === b; // false
一些简单的规则:
如果被比较的任何一个值可能是 true 或 false,要用 ===,而不是 ==;如果被比较的任何一个值是这些特定值(0、“”或 []),要用 ===,而不是 ==;在其他情况下,可以安全地使用 ==。它不仅安全,而且在很多情况下,它可以简化代码,并且提升代码可读性。q4:解释什么是回调函数,并提供一个简单的例子。
难度:回调函数是可以作为参数传递给另一个函数的函数,并在某些操作完成后执行。下面是一个简单的回调函数示例,这个函数在某些操作完成后打印消息到控制台。
function modifyarray(arr, callback) { // 对 arr 做一些操作 arr.push(100); // 执行传进来的 callback 函数 callback();}var arr = [1, 2, 3, 4, 5];modifyarray(arr, function() { console.log(array has been modified, arr);});
q5:“use strict”的作用是什么?
难度:use strict 出现在 javascript 代码的顶部或函数的顶部,可以帮助你写出更安全的 javascript 代码。如果你错误地创建了全局变量,它会通过抛出错误的来警告你。例如,以下程序将抛出错误:
function dosomething(val) { use strict; x = val 10;}
它会抛出一个错误,因为 x 没有被定义,并使用了全局作用域中的某个值对其进行赋值,而 use strict 不允许这样做。下面的小改动修复了这个错误:
function dosomething(val) { use strict; var x = val 10;}
q6:解释 javascript 中的 null 和 undefined。
难度:javascript 中有两种底层类型:null 和 undefined。它们代表了不同的含义:
尚未初始化的东西:undefined;目前不可用的东西:null。q7:编写一个可以执行如下操作的函数。
难度:var addsix = createbase(6);addsix(10); // 返回 16addsix(21); // 返回 27
可以创建一个闭包来存放传递给函数 createbase 的值。被返回的内部函数是在外部函数中创建的,内部函数就成了一个闭包,它可以访问外部函数中的变量,在本例中是变量 basenumb呃.
function create base(base number){ return function(n){//我们在这里访问基数,即使是在这个函数之外声明的。javascript中的闭包允许我们这样做。返回基数n;} } var add six = create base(6);add six(10);add six(21);
问题8:解释javascript中的值和类型。
难点:javascript有类型值,但没有类型变量。javascript提供了以下内置类型:
stringnumberbooleannull和undefinedobjectsymbol (es6中的es6新功能)q9:解释事件气泡以及如何阻止它。
难点:事件冒泡是指嵌套最深的元素触发一个事件,然后这个事件在嵌套顺序中的父元素上触发。
防止事件冒泡的一种方法是使用event.cancelbubble或event.stoppropagation()(低于ie 9)。
q10:javascript中的let关键字有什么用?
难度:除了在函数级声明变量,es6还允许在代码块中声明变量({..})使用let关键字。
q11:如何检查一个数是否是整数?
难点:检验一个数是小数还是整数的一个非常简单的方法就是对1取模,看是否有余数。
函数isint(num) {返回数字% 1 = = = 0;} console . log(isint(4));//true console . log(isint(12.2));//false console . log(isint(0.3));//假
q12:什么是生活(立即调用函数表达式)?
难点:即调用函数表达式,简称iife。该函数在创建后会立即执行:
(函数life(){ console . log( 你好! );})();// 你好!
这种模式通常用于避免污染全局名称空间,因为life中的所有变量(像任何其他普通函数一样)在其作用域之外都是不可见的。
q13如何在javascript中比较两个对象?
难点:对于两个非原始值,比如两个对象(包括函数和数组),比较= =和= =只检查它们的引用是否匹配,不检查实际引用的内容。
例如,默认情况下,一个数组将被转换为一个字符串,数组的所有元素都用逗号连接。因此,当比较= =:时,具有相同内容的两个数组将不相等:
var a = [1,2,3];var b = [1,2,3];风险值c = 1,2, a = = c;//trueb = = c;//truea = = b;//假
对于对象的深度比较,可以使用库deepequal,也可以自己实现递归比较算法。
q14:你能解释一下es5和es6的区别吗?
难度:ecmascript 5(es5):ecmascript第5版,2009年标准化。这个标准已经在所有现代浏览器中完全实现。ecmascript 6(es6)或ecmascript 2015(es 2015):ecmascript第6版于2015年标准化。这个标准已经在大多数现代浏览器中部分实现。以下是es5和es6之间的一些主要区别:
arrow函数和字符串插值:const greetings =(name)= { return ` hello $ { name } `;} const greetings = name = ` hello $ { name } `;常数
常量在很多方面和其他语言中的常量是一样的,但是也有一些需要注意的地方。常数代表 固定参考 到价值观。因此,当使用常量时,您实际上可以更改变量所引用的对象的属性,但是您可以 不要改变引用本身。
const names =[];names . push( 吉姆和);console . log(names . length = = = 1);//true names =[ 史蒂夫 , 约翰 ];//错误块范围变量。
新的es6关键字let允许开发人员声明块级范围的变量。让can 不要像var一样被提升。
默认参数值默认参数允许我们用默认值初始化函数。如果参数被省略或未定义,则使用默认值,这意味着null是有效值。
//基本语法函数multiply (a,b = 2){ return a* b;}m倍数(5);// 10类定义和继承
es6引入了对类(关键字class)、构造函数(关键字构造函数)和扩展关键字继承的支持。
for…of运算符for…of语句创建一个遍历被迭代对象的循环。
展开操作const obj 1 = {a: 1,b: 2 } const obj 2 = {a: 2,c: 3,d: 4 } const obj 3 = {...obj1,...obj2}对象合并的承诺。
promise提供了一种处理异步操作结果的机制。您可以使用回调来实现相同的目标,但是promise通过方法链接和简洁的错误处理带来了更好的可读性。
const isgreater = (a,b) = {return new promise ((resolve,reject)= { if(a b){ resolve(true)} else { reject(false)} } } is greater(1,2)。然后(result = { console . log( ;greater )})模块导出和导入。
const mymodul: 1,y:()= { console . log( ;这是es5 )} }导出默认mymodule从 amp导入我的模块;;。/my module ;;
问题15:解释 未定义 和 未定义 在javascript中。
难点:在javascript中,如果你试图使用一个变量。;不存在也没有。;如果没有声明,javascript将抛出一个错误var名称未定义脚本将停止运行。但是如果使用typeof undeclared_variable,就会返回undefined。
在进一步讨论之前,让 让我们理解声明和定义之间的区别。
风险值x 意味着一个声明,因为你没有。;无法定义它的价值。这是什么?你只要宣布它存在。
var x;//声明xconsol:未定义。
var x = 1 既是声明又是定义(我们也可以说是初始化),x变量的声明和赋值相继发生。在javascript中,每个变量声明和函数声明都被放在当前作用域的顶部,然后被赋值。这个过程叫做吊装。
当我们试图访问一个已声明但未定义的变量时,会出现一个未定义的错误。
var x;//声明if(x的类型= = 未定义 )//将返回true。
当我们试图引用一个既没有声明也没有定义的变量时,就会出现一个未定义的错误。
consol: referenc: y未定义。
问题16:什么?;匿名函数和命名函数的区别是什么?
难度:var foo = function(){//匿名函数赋给变量foo//..};var x = function bar(){ //赋给变量x//的命名函数栏..};foo();//实际执行函数x();
q17:什么是 关闭 用javascript?比如?
难点:闭包是在另一个函数(称为父函数)中定义的函数,可以访问在父函数范围内声明和定义的变量。
闭包可以在三个范围内访问变量:
在它们自己的范围内声明的变量;父函数中声明的变量;在全局范围内声明的变量。var globalvar = ampabc //由于调用函数(function outer function(outer farg){//outerfunction作用域开始//outer function作用域中声明的变量var outer func var = ;x ;//闭包从调用函数开始(function inner function(inner arg){//inner function作用域//inner function作用域中声明的变量,var innerfuncvar = y console . log( outerarg = outerarg n outerfuncvar = outerfuncvar n innerarg = innerarg n innerfuncvar = innerfuncvar n globalvar = global var);innerfunction作用域的结尾})(5);//以5为参数// outerfunction作用域ends })(7);//以7为参数
innerfunction是outerfunction中定义的闭包,可以访问outerfunction范围内声明和定义的所有变量。此外,闭包还可以访问全局名称空间中声明的变量。
上述代码的输出将是:
outer arg = 7 outer func var = xinner arg = 5 innerfunc var = yglobalvar = abc
q18:如何在javascript中创建私有变量?
难点:要在javascript中创建一个不可修改的私有变量,需要在函数中将其创建为局部变量。即使调用了这个函数,也不能在函数外部访问这个变量。例如:
func(){ var priv = 秘密代码 } console . log(priv);//抛出错误
要访问这个变量,需要创建一个返回私有变量的辅助函数。
func(){ var priv = 秘密代码 return函数(){ return priv} } var getpriv = func();console . log(getpriv());// =密码
请解释原型设计模式。
难点:原型模式可以用来创建新对象,但它创建的不是未初始化的对象,而是用原型对象(或样本对象)的值初始化的对象。原型模式也称为属性模式。
原型模式在初始化业务对象时非常有用,业务对象的值与数据库中的默认值相匹配。原型对象中的默认值被复制到新创建的业务对象中。
经典编程语言很少使用原型模式,但是javascript作为一种原型语言,在构造新对象及其原型时使用这种模式。
q20:判断一个给定的字符串是否同构。
难点:如果两个字符串同构,那么字符串a。中出现的所有字符都可以用另一个字符替换,从而得到字符串b,字符的顺序必须保留。字符串a中的每个字符必须与字符串b中的每个字符一一对应。
论文和标题将返回true。蛋和伤心会返回假的。dgg和add将返回true。isio morphic( 鸡蛋 , 添加 );//true isisomorphic( 纸张和饮料, 标题和标题。;);//true isisomorphic( 踢 , 侧边 );//false函数同构(firststring,second string){//检查长度是否相等。如果不相等,则不能同构if (firststring.length!== secondstring.length)返回false var letter map = { };for(var i = 0;i firststring.lengthi ) { var lettera = firststring[i],letterb = second string[i];//如果lettera不存在,则创建一个映射,并将letterb赋给它if(lettermap[lettera]= = undefined){ lettermap[lettera]= letterb;} else if (lettermap[lettera]!== letterb) {//如果lettera已经存在于映射中,但不对应letterb,//那么这意味着lettera对应多个字符。返回false} }//迭代后,如果满足条件,则返回true。//它们是同构的。返回true}
问题21:什么是 运输与运输刻薄?
难度:对于语言中新增加的语法,不能进行polyfill。因此,最好使用能够将新代码转换为旧代码的工具。这个过程通常被称为转换,即转换编译。
通常,您会在构建过程中添加一个transpiler,类似于linter或。迷你放大镜.现在有许多优秀的转换器可供选择:
巴别:把es6转换成es5traceur:把es6和es7转换成es5q22:什么是 这 关键词?请提供一些代码示例。
难度:在javascript中,这指的是 所有者和所有者正在执行的函数,或者更准确地说,它是指将当前函数作为方法的对象。
函数foo(){ consol: obj1 ,foo: foo };var obj 2 = { bar: obj2 };foo();// 全球 obj 1 . foo();// obj1 foo . call(obj 2);// obj2 new foo();//未定义
q23:如何给数组对象添加自定义方法,以便下面的代码可以运行?
难度:vararr = [1,2,3,4,5];var avg = arr . average();console.log(平均值);
javascript不是基于类的,但它是一种基于原型的语言。这意味着每个对象链接到另一个对象(即对象的原型),并继承原型对象的方法。您可以跟踪每个对象的原型链,直到到达一个没有原型的空对象。我们需要修改数组原型,以便向全局数组对象添加方法。
array . prototype . average = function(){//计算sum var sum = this . reduce(function(prev,cur){ return prev cur;});//将sum除以元素个数,返回sum/this . length;}var arr = [1,2,3,4,5];var avg = arr . average();console.log(平均值);// = 3
q24:javascript中的推广操作是什么?
难点:提升是javascript解释器将所有变量和函数声明移动到当前作用域顶部的操作。促销有两种类型:
变化数量推广——非常少见的功能推广——比较常见。无论var(或函数声明)出现在作用域的什么地方,它都属于整个作用域,可以在作用域的任何地方访问。
var a = 2;foo();//函数foo(){ a = 3;console . log(a);//3 var a;//语句是 晋升与晋升到foo () }console.log( a)的顶部;// 2
问题25:以下代码输出的结果是什么?
难度:0.1 0.2 = = 0.3
这段代码的输出是false,这是由浮点数的内部表示引起的。0.1 0.2不完全等于0.3,但实际结果是0.30000000000000004。解决这个问题的一个方法是在对小数执行算术运算时将结果四舍五入。
问题26:请描述揭示模块模式设计模式。
难点:揭示模块模式是模块模式的变种,目的是维护封装性,将对象中返回的一些变量和方法公开。如下所示:
var exposer =(function(){ var private variable = 10;var private method = function(){ console . log( ;在私有方法中! );私有变量;} var method to expose = function(){ console . log( ;这是我要曝光的一个方法! );} var othermethodwindtoexpose = function(){ privat: method to expose,second: oth:这是我要揭露的一个方法!exposer . second();//在p中输出:rivat www . full stack . cafe/blog/top26javascriptinterview问答in2019
了解更多undefined是什么软件(软件出现undefined是什么意思)相关内容请关注本站点。

u启动进去找不到硬盘,hp找不到启动设备请在硬盘上安装
win10系统桌面图标一闪一闪一闪(win10电脑桌面图标不停的闪)
一台顶配的游戏电脑大概多少钱,我想配台高档游戏电脑要多少钱
电脑dvi连接电视没有声音怎么设置(vga音频线连接电视没声音)
苹果怎么把通讯录导入手机,怎么将苹果手机的通讯录导入另一个苹果手机
undefined是什么软件(软件出现undefined是什么意思)
电脑废旧主机价格,二手电脑主机的价格
华为换苹果导数据(华为换苹果数据导入)
惠普一键恢复出厂设置系统(惠普系统一键还原)
数码复印机,数码复印机和模拟复印机有什么不同
微信怎么用美颜开视频免费(微信视频美颜怎么设置)
录屏没有声音怎么办手机(为什么手机录屏没有声音呀)
电脑硬盘固态多少钱一台,固态硬盘多少钱一个
二手apple pencil鉴别(二手applepencil二代怎么验真假)
wind10专业版永久激活(如何永久激活windows10专业版激活密钥2019最新)
电脑桌面上的图片用什么软件看图(电脑桌面的图片用什么软件可以看到)
水印相机如何拍视频教程(水印相机这么拍视频)
微软鼠标蓝牙配对图文教程图解(微软鼠标蓝牙配对图文教程图片)
小米手机锁屏时钟样式怎么更改设置(小米手机锁屏时钟样式设置)
用pe怎么修复系统盘(如何用pe修复系统教程)