• 8.30做JS的题目


    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的原理是利用<script>标签的跨域特性,可以不受限制地从其他域中加载资源,类似的标签还有<img>.

    第二种方式: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。 这等同于在浏览器中点击后退按钮

     <body οnbefοreunlοad="history.go(0)">这样这个网页就会永远停留再这个页面,不能前进后退了。

     

     

     

     

     

     

  • 相关阅读:
    UIKit框架-高级控件:2.UIScrollView的单图分页设置
    欢迎使用CSDN-markdown编辑器
    UIKit框架-高级控件:1.UIScrollView的基本认识
    UIKit基础:18-MVC模式, 代理消息传递机制, 计时器机制
    UIKit基础:17-基础控件的总结
    UIKit基础:16-小游戏之舒尔特表
    UIKit基础:15-与电脑玩剪刀石头布
    iOS之 Category 属性 的理解
    学习方法,特别对于新手
    iOS 之GCD串行和并发队列的理解
  • 原文地址:https://www.cnblogs.com/smhyu/p/13585084.html
Copyright © 2020-2023  润新知