jsjs笔试编程题,这道题怎么做

这道题用js咋做啊?在线等……【javascript吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:152,738贴子:
这道题用js咋做啊?在线等……收藏
登录百度帐号推荐应用如何理解这 14 道 JavaScript 题? - 知乎704被浏览19091分享邀请回答(function(){
return typeof arguments;
答案:"object"arguments 是对象,虽然像数组但不是数组此外,就算是数组,typeof 返回的也是 "object" 此外,就算是数组,typeof 返回的也是 "object" 2.var f = function g(){ return 23; };
typeof g();
答案:Errorg 未定义。在 JS 里,声明函数只有 2 种方法:第 1 种: function foo(){...}
(函数声明)第 2 种: var foo = function(){...}
(等号后面必须是匿名函数,这句实质是函数表达式)除此之外,类似于 var foo = function bar(){...} 这样的东西统一按 2 方法处理,即在函数外部无法通过 bar 访问到函数,因为这已经变成了一个表达式。但为什么不是 "undefined"?这里如果求 typeof g ,会返回 undefined,但求的是 g(),所以会去先去调用函数 g,这里就会直接抛出异常,所以是 Error。3.(function(x){
答案:1delete 操作符用于删除对象的成员变量,不能删除函数的参数。4.
var y = 1, x = y = typeof x;
答案:"undefined"先定义了 y 并赋值为 1,然后将 typeof x 赋值给 y ,此时 x 未定义,故为 "undefined",最后将 y 的值赋给 x5.(function f(f){
return typeof f();
})(function(){ return 1; });
答案:"number"在函数里的 f() 其实是参数的那个 f 的执行结果,所以是 typeof 1,也就是 "number"6.
var foo = {
bar: function() { return this.baz; },
(function(){
return typeof arguments[0]();
})(foo.bar);
答案:"undefined"经
指出,这里的 this 指的是 arguments,经测试确实如此:注意方括号。注意方括号。7.
var foo = {
bar: function(){ return this.baz; },
typeof (f = foo.bar)();
答案:"undefined"这个题我不懂,直接上 的回答:第7题的是因为CallExpression是不带有上下文信息,this会指向global;当你以foo.bar() 调用时,被调用的function是「MemberExpression」,而如果进行了f=foo.bar()赋值之后,那么function就会变成「CallExpression」了,因此this绑定就失效了。8.
var f = (function f(){ return "1"; }, function g(){ return 2; })();
答案:"number"只有最后面的函数会被执行。9.
var x = 1;
if (function f(){}) {
x += typeof f;
答案:"1undefined"括号内的 function f(){} 不是函数声明,会被转换成 true ,因此 f 未定义。10.
var x = [typeof x, typeof y][1];
typeof typeof x;
答案:"string"第一行执行完后 x === "undefined" ,所以连续求 2 次 typeof 还是 "string"11. (function(foo){
return typeof foo.bar;
})({ foo: { bar: 1 } });
答案:"undefined"typeof foo.bar 中的 foo 是参数,不多解释了。12.(function f(){
function f(){ return 1; }
return f();
function f(){ return 2; }
答案:2由于声明提前,后面的 f() 会覆盖前面的 f()13.function f(){ return f; }
new f() instanceof f;
答案:false来自 @日月 的补充说明:构造函数不需要显式声明返回值,默认返回this值。当显式声明了返回值时,如果返回值是非对象(数字、字符串等),这个返回值会被忽略,继续返回this值。但是如果返回值是对象,那么这个显式返回值会被返回。因为 f() 内部返回了自己,故此时 new f() 的结果和 f 相等。14.with (function(x, undefined){}) length;
答案:2with 限定了作用域是这个函数,function.length 返回函数的参数个数,所以是 2。来自 的备注:undefined 虽然是关键词,但可以被覆写。但 null 不能。15045 条评论分享收藏感谢收起
(function(){
return typeof arguments;
答案是“object”typeof操作符的结果只能是"undefined"(对一个未声明的标识符使用也不会报错)"boolean""string""number""object"(对null也返回这个值)"function"----------------------------------------第二题:
var f = function g(){ return 23; };
typeof g();
答案是Error此处g是函数名,然而第一行不是一个函数声明,因此函数名g仅能在该函数内部被访问到,外部访问不到,使用()来调用一个不存在的函数自然报错。-------------------------------------------第三题:
(function(x){
答案是1首先,非严格模式下无论怎么(符合语法地)使用delete,总是不会报错;然后,delete在函数内部无法删除传入的参数。(不过可以在全局作用域内删除未经function/var语句声明的变量。)-------------------------------------------第四题: var y = 1, x = y = typeof x;
答案是"undefined"(字符串)根据JavaScript声明提升的特性以及赋值运算的规则,这段代码可以看作var y,
y = typeof x // 此时y的值是"undefined"(字符串)
x; //x值为"undefined"字符串
-------------------------------------------第五题:(function f(f){
return typeof f();
})(function(){ return 1; });
答案是"number"一个函数名为f的自执行函数,接收一个函数作为参数。函数f内部的f则指向传入的实参而非函数f自身。因此相当于:(function f(){
return typeof (function(){ return 1; })();
------------------------------------------------第六题:var foo = {
bar: function() { return this.baz; },
(function(){
return typeof arguments[0]();
})(foo.bar);
答案是"undefined"这题应该是想考察this的指向。在ES5下面,判断this的指向,可以一步一步按照下面的流程进行(一旦满足某个判断即结束判断流程,不再考虑之后的情况),而跟函数是在哪里定义、声明的无关:函数是否是new调用?若是,则this指向新对象函数是否是bind方法返回的?若是,则this指向指定对象。函数是否通过apply/call调用?若是,则this指向指定对象。是否作为对象的方法调用?若是,则this指向该对象this指向全局这段代码里,函数作为arguments对象的方法被调用,this指向arguments对象并不存在的baz属性,因此返回“undefined”---------------------------------------------------第七题:
var foo = {
bar: function(){ return this.baz; },
typeof (f = foo.bar)();
答案是"undefined"首先不要忘了赋值运算“=”也是有返回值的,因此(f = foo.bar)的返回值是foo.bar指向的函数。调用该函数,根据前述this的规则判断,应该是属于第五步的“指向全局”而非第四部“作为某对象的方法调用”(这是很多书里都提到的“this丢失”的陷阱),而全局对象内并无baz属性,因此返回undefined------------------------------------------------第八题:
var f = (function f(){ return "1"; }, function g(){ return 2; })();
答案是"number"逗号除了作为分隔符,也是一个操作符,总是返回最后一项。因此(function f(){ return "1"; }, function g(){ return 2; })
这个表达式的值是函数g,立刻通过()进行调用后返回数字2----------------------------------------------------第九题: var x = 1;
if (function f(){}) {
x += typeof f;
答案是"1undefined"if语句的判断部分内是一个函数f,转化为布尔值为真。(只有""(空字符串)、0、NaN、null、undefined的布尔值是false)。这段代码里的function f(){}并不是函数声明。如何判断是否是函数声明:function这个关键词之前有任何东西,那么这都不是一个函数声明,而是函数表达式。因此全局内并无f这个标识符,代码相当于 var x = 1;
if (true) {
x = 1 + 'undefined';
--------------------------------------第十题:
var x = [typeof x, typeof y][1];
typeof typeof x;
答案是"string"又是一个声明提升。这段代码可以看作
x = [typeof x, typeof y][1]; //此时x值为typeof y的结果:"undefined"(字符串)
typeof typeof x;
---------------------------------------第十一题:
(function(foo){
return typeof foo.bar;
})({ foo: { bar: 1 } });
答案是"undefined"这个没啥,仔细看题就可以了。------------------------第十二题:
(function f(){
function f(){ return 1; }
return f();
function f(){ return 2; }
又是声明提升的问题,相当于
(function f(){
function f(){ return 1; }
function f(){ return 2; }
return f();
值得一提的是function声明和var声明不同,var声明对于重复的声明是忽略的,而function声明则是覆盖。---------------------------------------第十三题:
function f(){ return f; }
new f() instanceof f;
简单地说,使用new操作符时,若调用的函数返回的是一个对象,则相当于这个new操作符一点用也没有。函数f返回的是自身,即一个对象,因此代码相当于
function f(){ return f; }
f instanceof f;
instanceof操作符根据原型链判断一个对象是否是一个构造函数的实例。显然一个函数不可能是自己的实例。所以答案是false----------------------------------------第十四题:
with (function(x, undefined){}) length;
对with语句有一点了解的话,就知道这代码相当于(function(x,undefined) {}).length
而一个函数对象的length属性是该函数的形参个数,故答案是21815 条评论分享收藏感谢收起查看更多回答如何用nodejs来做编程题? - CNode技术社区
这家伙很懒,什么个性签名都没有留下。
最近在牛客网上刷题,有一个在线编程题库是华为的机考题,里面的编程题可以用Java、c/c++、paython、javascript(node0.12.12)来写。我想学着怎么用JS(node)来写,但是实在不知道怎么下手。。。
在牛客网上有没有答案,我刚学JS,又不知道怎么入手。。连怎么获取控制台输入的内容都不懂
请问大家还知道什么好一些适合新手的刷题网站吗?或者,大家都是怎么提高自己的JS编程水平的呢?
process.stdin.resume();
process.stdin.on('data', function(data){
console.log(data);
on data好像会自己resume的
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
服务器赞助商为
,存储赞助商为
,由提供应用性能服务。
新手搭建 Node.js 服务器,推荐使用无需备案的Javascript中几个看起来简单,却不一定会做的题
Javascript中几个看起来简单,却不一定会做的题
创造性的摄影世界
前言Javascript作为前端开发必须掌握的一门语言,因为语言的灵活性,有些知识点看起来简单,在真正遇到的时候,却不一定会直接做出来,今天我们就一起来看看几道题目吧。Javascript题目1首先,我们来看一道稍微简单的题目,题目代码如下。这道题考察的知识点是运算符的优先级。首先,小括号()的优先级是最高的,所以首先会做判断,val与smtg相等返回true。因此最后这道题等价于判断是执行下面的语句1还是语句2。判断根据运算符的优先级我们知道,连接运算符+的优先级要高于条件运算符?的优先级,因此实际执行的是语句2,所以最终结果返回'Something'。题目2我们再来看看下面这道题。这道题考擦的是数组的初始化和filter方法。第一眼看上去,很多人会以为结果会输出[undefined,undefined,undefined],但是实际输出确是undefined,为什么会这样呢?这是因为在Javascript里存在稀疏数组的概念,数组在初始化时,只会对已经确定索引的选项进行初始化,对于不存在索引的选项不进行初始化,通过以下代码可以确定。对数组使用in运算符时,是通过枚举数组的索引,通过3和4返回false可以知道,ary[3]和ary[4]实际是不存在的,未进行初始化。接下来我们再看看Array.prototype.filter方法的polyfill,注意代码中标注的地方。filter源代码在filter方法的源代码中,我们发现使用了in运算符,而ary数组没有对索引为3,4,5的值进行初始化,因此会直接跳过执行,所以结果最终返回undefined。题目3直接通过代码来看题目吧。乍一看,很多人会以为答案输出'CaseA',但是实际结果输出为'Donotknow'。这是为什么呢?这道题考察的知识点是:switch和string。我们需要知道以下两点:Javascript中switch执行的是严格相等(===)。字符串和String的实例不一样。关于第2点我们可以测试一下。测试代码因此针对题目中的'A'与newString('A')并不严格相等,最终会返回''Donotknow'。题目4针对上面的题目3,我们稍作一点改动,成为下面的题目4,再看看结果输出什么?题目4相对于题目3,只是在最后调用的时候传入的参数是String('A'),它的结果就变成了'CaseA'。这是为什么呢?其实很简单,String(X)返回的是一个字符串而不会生成一个新的String实例,因此与'A'是严格相等的。总结看了上面的几道题目,是不是觉得Javascript确实有很多神奇之处,如果认真看完了能一下子全做对的话,说明基础还是不错的,后续还会总结出更多Javascript中的容易做错的题目。
本文仅代表作者观点,不代表百度立场。系作者授权百家号发表,未经许可不得转载。
创造性的摄影世界
百家号 最近更新:
简介: 公务员之路 从华图起步}

我要回帖

更多关于 js笔试编程题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信