8.30做JS的题目

2021-01-06 22:28

阅读:410

标签:读写   mic   number   它的   相同   就是   type   变量   flash   

1.以下代码执行后,console 的输出是?

let x = 10;
let foo = () => {
console.log(x);
let x = 20;
x++;
}
foo();

抛出 ReferenceError

2.

var myObject = {
    foo: "bar",
    func: function() {
        var self = this;
        console.log(this.foo);   
        console.log(self.foo);   
        (function() {
            console.log(this.foo);   
            console.log(self.foo);   
        }());
    }
};
myObject.func();

 

程序的输出是什么?

bar  bar  undefined  bar

1.第一个this.foo输出bar,因为当前this指向对象myObject

2.第二个self.foo输出bar,因为self是this的副本,同指向myObject对象。

3.第三个this.foo输出undefined,因为这个IIFE(立即执行函数表达式)中的this指向window。

4.第四个self.foo输出bar,因为这个匿名函数所处的上下文中没有self,所以通过作用域链向上查找,从包含它的父函数中找到了指向myObject对象的self。

3.下列不属于javascript中查找元素的方法的是()

1.根据id获取元素

document.getElementById("id属性的值");

2.根据标签名字获取元素

document.getElementsByTagName("标签的名字");

3.根据name属性的值获取元素

document.getElementsByName("name属性的值"); 

4.根据class属性获取元素 

document.getElementsByClassName("类样式的名字");

5.根据css路径获取元素 (获取一个)

document.querySelector("css路径");

6.根据css路径获取元素 (获取一组)

document.querySelectorAll("css路径"); 

4.下面这段代码:

console.log(1);
let a = setTimeout(() => {console.log(2)}, 0);
console.log(3);
Promise.resolve(4).then(b => {
console.log(b);
clearTimeout(a);
});
console.log(5);

控制台的输出结果是:

1 console.log(1);//同步
2 let a = setTimeout(() => {console.log(2)}, 0);//回调
3 console.log(3);//同步
4 
5 Promise.resolve(4).then(b => {
6 console.log(b);//异步
7 clearTimeout(a);
8 });
9 console.log(5);//同步
执行顺序:同步=》异步=》回调
先执行同步代码 输出1,3,5
在执行异步代码 输出 4
取消了定时器事件 于是不输出2

5.关于跨域问题下面说法正确的是?()

A可以利用flash的http请求,来处理跨域问题

B通过iframe设置document.domain可以实现跨域

C一般情况下,m.toutiao.com可以ajax请求www.toutiao.com域名下的接口并获得响应

D通过jsonp方式可以发出post请求其他域名下的接口

第一种方式:jsonp请求;jsonp的原理是利用

第二种方式:document.domain;这种方式用在主域名相同子域名不同的跨域访问中

第三种方式:window.name;window的name属性有个特征:在一个窗口(window)的生命周期内,窗口载入的所有的页面都是共享一个window.name的,每个页面对window.name都有读写的权限,window.name是持久存在一个窗口载入过的所有页面中的,并不会因新页面的载入而进行重置。

第四种方式:window.postMessage;window.postMessages是html5中实现跨域访问的一种新方式,可以使用它来向其它的window对象发送消息,无论这个window对象是属于同源或不同源。

第五种方式:CORS;CORS背后的基本思想,就是使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应是应该成功还是应该失败。

第六种方式:Web Sockets;web sockets原理:在JS创建了web socket之后,会有一个HTTP请求发送到浏览器以发起连接。取得服务器响应后,建立的连接会使用HTTP升级从HTTP协议交换为web sockt协议。

6.以下对闭包(closure)理解正确的有  ()ABCD

A闭包是指有权访问另一个函数作用域中变量的函数;

B函数内再嵌套函数;

C内部函数可以引用外层的参数和变量

D参数和变量不会被垃圾回收机制回收

7.下面结果为不为真的表达式是:()

A.null == undefined Object.prototype;

B.[1,2,3].splice(1,1,1) == [2]

C.let Mi = new Function();Mi.__proto__.__proto__ == Object.prototype;

D.‘1‘ === true

A选项就是对的

B选项改变了原来的数组返回的是【2】比较的时候地址不一样所以是flase

CObject.prototype只是一个普通对象,它是js原型链的最顶端Object.prototype只是一个普通对象(普通对象没有prototype属性,所以值是undefined)

 Object.prototype.__proto__=== null;//true

Object.prototype.prototype === undefied;//true

js中每一个对象或函数都有属性,但是只有函数对象才有prototype属性。

//函数对象

function Person()

{

        

}

 

// 普通对象

var obj = {};

 

obj.__proto__ === Object.prototype;//true

obj.prototype === undefined;//true

Person.__proto__ === Function.prototype;//true

Person.prototype !== undefined;//true

Function.prototype是个特例,它是函数对象,但是没有prototype属性。其他所有函数都有prototype属性。

Function.prototype.prototype === undefined;//true

函数也是对象,因为Function.prototype__proto__指向Object.prototype

typeof Function.prototype.__proto__) === "object";//true

Function.prototype.__proto__=== Object.prototype;//true

内置的Function也是一个函数对象,它是通过自己来创建自己的。

Function.__proto__=== Function.prototype;//true

D.选择前面是字符串后面是布尔型所以false

8.以下表达式不会出现错误的有()

A.2.toString()

B.2..toString()

C.2 .toString()

D.(2).toString()

整数调用toString就会报错。

2..toString()因为连续的两个小数点不符合number的格式规则,第二个小数点才会被解析为调用方法

BCD

9.当用户打开一个网页时,想一直停留在当前打开的页面,禁止页面前进和后退,以下正确的是(   AD   )

A.window.history.forward(1);

B.window.history.back(1);

C.window.history.go(-1);

D.window.history.forward(-1);

 history.back() 方法加载历史列表中前一个 URL。 这等同于在浏览器中点击后退按钮

 这样这个网页就会永远停留再这个页面,不能前进后退了。

 

 

 

 

 

 

8.30做JS的题目

标签:读写   mic   number   它的   相同   就是   type   变量   flash   

原文地址:https://www.cnblogs.com/smhyu/p/13585084.html


评论


亲,登录后才可以留言!