huaqi_前端相关错题记录_2021-12-20

huaqi_前端相关错题记录_2021-12-20

1、flash 和 js 通过什么类如何交互?

解析:Flash提供了 ExternalInterface 接口与JavaScript通信, ExternalInterface 有两个方法,call 和 addCallback。

在flash中调用js方法,ExternalInterface.call(jsFunName, params)。jaFunName:js方法名;params:flash传递给js方法的参数。

注册flash函数用于js调用,ExternalInterface.callback(flashFunName,flashFun)。flashFunName:flash方法名;flashFun:flash方法体。

2、用 js 让一个 input 的 背景颜色 变为 红色

解析:

(1)思路

① 获取该元素。

② 通过该元素拥有的属性或方法修改元素的样式。

(2)细节

① 获取元素可以使用document.getElementById()、document.getElementByTagName()等若干方法,也可以利用元素的层级关系(父子关系、兄弟关系等)。

② 通过js改变元素样式的两个最常见的API为:style、ClassName。通过style接口,一次只能修改元素的一个样式。通过className接口,一次可以修改元素的多个样式,前提是css中已经定义了所使用类名的元素相关样式。

③ backgroundColor与background-color

在使用“.”运算符时,浏览器无法正确解析“-”符号,所以无法正常解析background-color字符串,在这种情况下,只能使用驼峰命名法表示变量。

在使用“[ ]”运算符时,“-”被浏览器理解为字符串中的内容,可以正常解析background-color字符串。

eg:

inputElement.style.backgroundColor = 'red'; // 正确

inputElement.style.background-color = 'red'; // 错误

inputElement.style["background-color"] = 'red'; // 正确

(3)表示红色的若干种方法

① 颜色名称:red

② rgb方式-百分比:rgb(100%, 0, 0)

③ rgb方式-数值:rgb(255, 0, 0)

④ 十六进制:#FF0000

⑤ 简写十六进制:#F00

3、以下js代码会输出什么?

function Foo() {
        var i = 0;
        return function() {
            console.log(i++);   
        };
};
var f1 = Foo(),
    f2 = Foo(); 
fl();
f1();
f2();

正确答案:0 1 0

解析:

(1)function是引用类型,保存在堆中;变量f1、f2保存在栈中。

(2)闭包:一个函数(产生新的作用域)定义的局部变量、子函数的作用域在函数内。一旦离开该函数,局部变量无法访问。通过返回子函数到变量f1的方法,让f1指向堆中的函数作用域,这样可以使用局部变量i。

(3)代码执行过程:

① 第一次 f1() 执行:f1 = Foo();i = 0,return值赋值给变量f1(f1指向子函数 f1() = function(){...},因为子函数未定义变量i,所以向上找到父函数定义的变量i),执行子函数(输出i = 0,子再自加使i = 1,覆盖父函数Foo定义的变量i值)。

② 第二次 f1() 执行:此时变量f1 仍然指向原函数Foo(),所以执行子函数 function(){...},输出父函数Foo()定义的变量i = 1,再自加使i = 2。

③ 第一次 f2() 执行:由于f2 指向堆中新创建的Foo()函数,其余执行过程同 ①,输出i = 0。

4、请给出以下代码的运行结果:

<SCRIPT LANGUAGE="JavaScript">
var bb = 1;
function aa(bb) {
    bb = 2;
    alert(bb);
};
aa(bb);
alert(bb);
</SCRIPT>

正确答案:2 1

解析:

ECMA中所有函数的参数都是按值传递的

值传递:把一个值类型(亦称基本类型)传递给另一个变量时,其实是分配了一块新的存储空间,因此就本题来说,在内部改变量bb的值时,对函数外部的变量bb没有影响。

5、有关 JavaScript 中 call() 和 apply() 方法的描述。

call()和apply()都属于Function.prototype的一个方法,所以每个function实例都有call、apply属性。

call()方法和apply()方法的作用相同,区别在于接收参数的方式不同。对于call()方法来说,第一个参数的this值没有变化,变化的是其余参数都直接传递给函数。

call()传入的则是直接的参数列表。call()方法可将一个函数的对象上下文从初始的上下文改变未由 thisObj 指定的新对象。

apply()传入的是一个参数数组,也就是将多个参数组合成为一个数组传入。

以上差别如下代码做出解释:

function add(c, d){
    return this.a + this.b + c + d;
};
var o = {
    a: 1,
    b: 3
};
add.call(o, 5, 7); // 1 + 3 + 5 + 7 = 16
add.apply(o, [10, 20]); // 1 + 3 + 10 + 20 = 34

6、border: none 和 border: 0 的区别。

(1)效果

border-style: none; // 无边框

border-width: 0; // 边框宽度为0px

(2)性能差异

border: 0; // 浏览器对border-width、border-color进行渲染,占用内存

border: none; // 浏览器不边框进行任何渲染,不占用内存

① Chrome:

border: none; // border: initial none initial

border: 0; // border: 0 initial initial

② Firefox、360:

border: none; // border: medium none;

border: 0; // border: 0 none;

(3)浏览器兼容

IE7 不支持border: none;

W3C提示:请始终把border-style属性声明到border-color属性之前,元素必须在改变颜色之前获得边框。

7、关于 CSS sprites

(1)简介 CSS Sprites在国内很多人叫css精灵,是一种网页图片应用处理方式。它允许将一个页面涉及到的所有零星图片都包含到一张大图中, 利用 CSS 的 “background-image”,“background- repeat”,“background-position” 的组合进行背景定位, 访问页面时避免图片载入缓慢的现象。

(2)优点

① CSS Sprites能很好地减少网页的http请求,从而大大的提高页面的性能,这是CSS Sprites最大的优点,也是其被广泛传播和应用的主要原因。

② CSS Sprites能减少图片的字节。

③ CSS Sprites解决了网页设计师在图片命名上的困扰,只需对一张集合的图片命名,不需要对每一个小图片进行命名,从而提高了网页制作效率。

④ CSS Sprites只需要修改一张或少张图片的颜色或样式来改变整个网页的风格。

(3)缺点

① 图片合并麻烦:图片合并时,需要把多张图片有序的合理的合并成一张图片,并留好足够的空间防止版块出现不必要的背景。

② 图片适应性差:在高分辨的屏幕下自适应页面,若图片不够宽会出现背景断裂。

③ 图片定位繁琐:开发时需要通过工具测量计算每个背景单元的精确位置。

④ 可维护性差:页面背景需要少许改动,可能要修改部分或整张已合并的图片,进而要改动css。在避免改动图片的前提下,又只能(最好)往下追加图片,但这样增加了图片字节。

8、关于浏览器内核

Webkit是一个开源的Web浏览器引擎,也就是浏览器的内核。Apple的Safari、Google的Chrome、Nokia S60平台的默认浏览器、Apple手机的默认浏览器、Android手机的默认浏览器均采用Webkit作为浏览器内核。2013年后,Chrome使用Webkit分支Blink内核。

Firefox使用Gecko内核。

微软的IE系列使用Trident内核。

搜狗浏览器的双核运行:所有网页(标准通用标记语言的应用超文本标记语言)由Webkit内核处理,只有银行网站使用Trident内核处理。

全部评论

相关推荐

头像
10-22 20:13
中南大学 Java
序言大家好呀。我是希晨er,一个初入职场的程序猿小登最近上班摸鱼刷到了一篇文章:10年深漂,放弃高薪,回长沙一年有感,还有聊聊30岁大龄程序员过往的心路历程,突然就有点感慨。我如今也做出了和大明哥一样的抉择,只是更早。此外我22年的人生,好像从来没好好记录过。正好现在工作不太忙,就想把这些经历写下来,也希望能得到社区里各位前辈的指点个人背景我是03年出生的西安娃,父母都是普通打工人。刚从中南大学软件工程专业毕业半年,现在在老家的央企过着躺平摆烂的日子成长轨迹从农村到城市的童年我家并不是西安的,只是爸妈在西安上班,从小学之后就把我接到了西安。后来老家房子拆了,爷爷奶奶也搬了过来。农村的生活,我觉...
Yki_:看哭了,恋爱那一段你女朋友说你不够关心她,可你毕竟也愿意遇到矛盾写几千字来和她慢慢分析;说不愿意给她花钱,我感觉可能只是消费观不一样;如果她想留在长沙,也应该提前跟你说开。不过她也许会心疼你放弃大厂offer转向数字马力?我也因为同样的原因有过一段幸福而充满遗憾的感情,不过跟爱情相比确实前途更重要一点。至于offer的选择,换我我也会这么选。把这些旧事记录下来以后,接下来就好好向前看吧,加油兄弟
🍊晨光随笔
点赞 评论 收藏
分享
头像
10-13 18:10
已编辑
东南大学 C++
。收拾收拾心情下一家吧————————————————10.12更新上面不知道怎么的,每次在手机上编辑都会只有最后一行才会显示。原本不想写凉经的,太伤感情了,但过了一天想了想,凉经的拿起来好好整理,就像象棋一样,你进步最快的时候不是你赢棋的时候,而是在输棋的时候。那废话不多说,就做个复盘吧。一面:1,经典自我介绍2,项目盘问,没啥好说的,感觉问的不是很多3,八股问的比较奇怪,他会深挖性地问一些,比如,我知道MMU,那你知不知道QMMU(记得是这个,总之就是MMU前面加一个字母)4,知不知道slab内存分配器-&gt;这个我清楚5,知不知道排序算法,排序算法一般怎么用6,写一道力扣的,最长回文子串反问:1,工作内容2,工作强度3,关于友商的问题-&gt;后面这个问题问HR去了,和中兴有关,数通这个行业和友商相关的不要提,这个行业和别的行业不同,别的行业干同一行的都是竞争关系,数通这个行业的不同企业的关系比较微妙。特别细节的问题我确实不知道,但一面没挂我。接下来是我被挂的二面,先说说我挂在哪里,技术性问题我应该没啥问题,主要是一些解决问题思路上的回答,一方面是这方面我准备的不多,另一方面是这个面试写的是“专业面试二面”,但是感觉问的问题都是一些主管面/综合面才会问的问题,就是不问技术问方法论。我以前形成的思维定式就是专业面会就是会,不会就直说不会,但事实上如果问到方法论性质的问题的话得扯一下皮,不能按照上面这个模式。刚到位置上就看到面试官叹了一口气,有一些不详的预感。我是下午1点45左右面的。1,经典自我介绍2,你是怎么完成这个项目的,分成几个步骤。我大致说了一下。你有没有觉得你的步骤里面缺了一些什么,(这里已经在引导我往他想的那个方向走了),比如你一个人的能力永远是不够的,,,我们平时会有一些组内的会议来沟通我们的所思所想。。。。3,你在项目中遇到的最困难的地方在什么方面4,说一下你知道的TCP/IP协议网络模型中的网络层有关的协议......5,接着4问,你觉得现在的socket有什么样的缺点,有什么样的优化方向?6,中间手撕了一道很简单的快慢指针的问题。大概是在链表的倒数第N个位置插入一个节点。————————————————————————————————————10.13晚更新补充一下一面说的一些奇怪的概念:1,提到了RPC2,提到了fu(第四声)拷贝,我当时说我只知道零拷贝,知道mmap,然后他说mmap是其中的一种方式,然后他问我知不知道DPDK,我说不知道,他说这个是一个高性能的拷贝方式3,MMU这个前面加了一个什么字母我这里没记,别问我了4,后面还提到了LTU,VFIO,孩子真的不会。
走呀走:华子二面可能会有场景题的,是有些开放性的问题了
点赞 评论 收藏
分享
迷茫的大四🐶:那你问他上班之后老实了没
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务