领跑计划的练习题目

本文中的题目都是来自渡一的题目的当天的题目以及JS的练习题目。

第一天

1.html标签身上的lang属性下面说法不正确的是(C)
A.定义html标签内使用的语言
B.向搜索引擎表示该页面为html页面,并且为英文网站
C.如果lang="en"表示在页面中不允许存在中文
解析:lang=“en”是告诉收索引擎爬虫这个网页是英文的,只是主体语言是英文,而比如说p标签内部可以写中文,并不是不可以包含中文。)

<p>可以存着在中文</p>

2.下面有关html Doctype的描述,说法错误的是?(D)
A.它的责任就是告诉浏览器文档使用哪种html或者xhtml规范
B.不同文档模式主要影响CSS内容的呈现,尤其是浏览器对盒模型的解析
C.不同的浏览器在混杂模式下的行为差异非常大,如果不使用某些hack技术,跨浏览器行为根本就没有一致性可言
D.如果在文档开始处于没有发现文档类型声明,则所有浏览器都会开启严格模式
解析:浏览器的模式有三种,混杂模式,正常模式,严格模式,其中如果没有进行doctype声明,浏览器会进入怪异渲染模式,而不是严格模式,严格模式是es6的use district 的模式)
3.meta标签的用途错误的是(D)
A.元素可提供有关于页面的元信息(meta-information),比如针对搜索引擎和和更新频度的描述和关键字
B.meta元素提供了关于网站的各种信息。
C.元素除去charset属性外,都是http-equiv属性name属性结合content来使用
D.如果想要告诉搜索引擎你的站点的描述的主要内容是什么可以设置

 <meta name="description" content="淘宝网 - 亚洲较大的网上交易平台,提供各类服饰、美容、家居、数码、话费/点卡充值… 数亿优质商品,同时提供担保交易(先收货后付款)等安全交易保障服务,并由商家提供退货承诺、破损补寄等消费者保障服务,让你安心享受网上购物乐趣!" />
  <meta name="keyword" content="淘宝,掏宝,网上购物,C2C,在线交易,交易市场,网上交易,交易市场,网上买,网上卖,购物网站,团购,网上贸易,安全购物,电子商务,放心买,供应,买卖信息,网店,一口价,拍卖,网上开店,网络购物,打折,免费开店,网购,频道,店铺" />

分析:描述的话,前面的name应该是description;如果说是keywords的话,后面显示的内容应该是关键字。

每日一题

function getInfo(member,year){
            member.name = 'css';
            year = '1998';
        }

        var person = {name:'html'};
        var birthYear = '1997';
        getInfo(person,birthYear);
        
        console.log(person,birthYear);

分析:这道题目考察的知识点是引用值和原始值在函数的传递,引用值传递的是地址,所以说在调用getInfo函数的时候,第一个参数person是引用值,所以说舛讹遇到member中的是地址,所以当member.name在改变的时候person.name也发生了变化,而birthYear是常量,只是传入进去后被重新赋值,而在外借访问birthYear还是原来的值。
结果展示:{name: “css”} "1997"

第二天

  1. css基础选择器种类有哪些:id选择器、class选择器、标签选择器、通配符选择器、属性选择器。
    css权重问题
    (1)!important,加在样式属性值后,权重值为10000

(2)内联样式,如:style="",权重值为1000

(3)ID选择器,如:#content,权重值为100

(4)类,伪类和属性选择器,如:content、:hover权重值为10

(5)标签选择器和伪元素选择器,如:div,p,:before权重值为1

(6)通用选择器( * ) 、子选择器(>)、相邻选择器(+)、同胞选择器(~)、权重值为0
2. 下列代码中demo1,demo2,demo3的背景颜色分别是 tomato,blue,red。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /* 第一个:权重是10+10+10=30 */
        .wrapper .demo:first-child{
            background-color: tomato;
        }
        /* 第一个:10+10=20 */
        .wrapper .demo1{
            background-color: yellow;
        }
        /* 第二个:20 */
        .wrapper .demo2{
            background-color: pink;
        }
        /* 第三个:100 */
        #demo3{
            background-color: red;
        }
        /*覆盖:20  */
        .wrapper .demo{
            width: 100px;
            height: 100px;
            background-color: blue;
        }
        /* 背景是紫色 */
        .wrapper *{
            background-color: purple;
        }
    </style>
</head>
<body>
    <div class="wrapper">
        <div id="demo1" class="demo demo1">demo1</div>
        <div id="demo2" class="demo demo2">demo2</div>
        <div id="demo3" class="demo demo3">demo3</div>
    </div>
</body>
</html>

结果展示:
在这里插入图片描述
3. 下面关于form属性中说法错误的是( D )
A.method 属性一共有两个选项,post和get
post和get的区别:传输数据不一样。post在body里面 ,get在url后面(浅显,答案不算满分,当一旦能劫持到一个请求的时候,安全性都是一样的,可以采取加密方式)
B.action属性用来定义提交给服务器处理程序的地址
C.enctype属性用来定义表单数据进行编码的方式
D.enctype属性的默认值是:text/plain
分析:当 method 属性值为 post 时,enctype 就是将表单的内容提交给服务器的 MIME 类型 。可能的取值有:
application/x-www-form-urlencoded:未指定属性时的默认值。
multipart/form-data:当表单包含 type=file 的 元素时使用此值。
text/plain:出现于 HTML5,用于调试。

每日两题

		 function Car(){
            this.name = '兰博基尼';
            return {
                name : "玛莎拉蒂",
            }
        }
        var car = new Car();
        console.log(car.name);

分析:打印输出的是car的name,代码分析之后Car构造函数之后返回一个对象,其中有name属性,它指的是玛莎拉蒂。

		 function foo(){
            this.count++;
        }
        foo.count = 0;
        for(var i = 0;i<10;i++){
            if(i%5){
                foo();
            }
        }
        console.log(foo.count);

分析:分析for循环,循环的参数i实在0到9之间,然后出了模5之后0的没有执行函数,即当i是0或者5的时候没有执行,那么执行了8次foo函数,但是this指向的是window,并不是foo,所以说,每次都无法修改foo.count,所以说,最终的结果就是0。

每日一题

	var value = !function(a,b){
            return !!a&&!!b;
        }(1,2);
        console.log(value);

分析:首先分析!符号,既然是取非,那么后面的只能是一个表达式,而不是一个函数,应该是立即执行函数,那么就意味着求出立即执行函数的结果然后进行取反。下面分析这个函数,传入的参数的值是1,2,然后**!!操作使得1,2的值变为true,true那么函数的返回值就是true,取反之后的值是false,所以最后的值就是false。**

第三天

  1. 关于盒模型的说法下面说法正确的是(A)
    A. 标准盒子模型中:盒子的总宽度 = 左右margin + 左右border + 左右padding + width
    B. IE盒子模型中:盒子总宽度 = 左右margin + 左右border + width C. 标准盒子模型中:盒子的总宽度 = 左右margin + 左右border + width
    D. IE盒子模型中:盒子总宽度 = width
    分析:在盒模型中,有两张类型,一种是标准盒模型,一种是怪异盒模型。
    在标准模型中,盒子的总宽度 = 左右margin + 左右border + 左右padding + width。
    在怪异盒模型中,width = content+padding+boder
  2. 关于定位的说法下列选项中正确的是(A)
    A. position:fixed相对于视口进行定位
    B. position的值中只有absolute会脱离文档流
    (解析fixed和absolute都会脱离文档流)
    C. position:absolute绝对定位元素相对于视口进行定位,脱离文档
    (解析:先查找父级的定位,如果父级没有定位相对于文档进行定位,脱离文档流)
    D. position: sticky; 是css3中的值相对于父级定位,不会脱离文档流
    static: 静态得 不允许设置位置得
    relative 相对于自身原来位置(没有设置定位得时候得位置)进行定位
    absolute 相对于最近有定位得父级 如果没有最近有定位得父级那么相对于视口进行定位
    会使元素脱离正常得文档流
    fixed 相对于视口进行定位 并且会脱离文档流
    sticky 相对于最近得含有滚动特点的元素(overflow不为visible的元素)
    不会使元素脱离正常的文档流的
  3. 关于bfc的说法正确的是(A)
    A. bfc为块级格式化上下文,是一个独立的渲染区域,定义了内部的块级元素如何布局
    B. bfc为css中的一个属性,可以通过bfc属性显示修改 (解析:bfc 不是一个属性而是一个渲染方式的概念)
    C. bfc可以通过float和overflow两个属性来触发 (解析:float: left/right overflow: hidden)
    D. 触发bfc的元素可能会产生margin塌陷的问题 (解析:解决margin塌陷的问题)

bfc: block format context 块级格式化上下文
触发bfc的方法:
3. folat
4. position: absolute
5. overflow: 不能是visible
6. display: inline-block

每日一题

 var arr = [1,2,3,4];
    arr.length = 1;
    console.log(arr);

分析:改变数组的长度之后,书组内应该只剩下第一个元素,所以打印出来的就是[1].
在这里插入图片描述

第四天

1.关于border-radius的说法下面错误的是(D)
A.border-radius是css3中的新属性
B.border-radius设置的圆角属性,值的个数可以为1,2,3,4,5,8
C.border-radius为复合属性,可以拆分为border-top-left-radius,border-top-right-radius,borde-bottom-left-radius,border-bottom-right-radius
D.border-radius:50%;表示绘制一个正圆
分析:在设置border-radius设置圆角属性的时候,1个值的时候,设置的为全部,从左上,右上,右下,左下的属性;两个值的时候,左上和右下是一对,右上和左下是一对;同理可以设置四个方向的值;另外,可以设置椭圆形,比如说设置八个属性
border-radius:10px 20px 30px 40px /10px 20px 30px 40px;一个一个进行对应,比如说左上的椭圆属性是10px,10px。
只有在width等于height的时候,才会是一个正圆。
2.关于float浮动下面说法正确的是:(B)
A.float元素会产生浮动流,产生浮动流的元素<-对错其父级看不到他们
B.产生bfc的元素和文本类属性的元素以及文本都可以看到浮动元素
C.可以通过为浮动元素设置clear:both属性来清除浮动(解析:可以通过浮动元素的子元素清除浮动流 浮动流的三件套(content””,clear:both ,display:block))
D.浮动元素会脱离文本流
分析:C选项,浮动的三件套是需要添加在浮动元素的兄弟节点上,而不是浮动元素;D选项,浮动元素会脱离文档流,文档流的范围比文本流要大。
3.关于line-height属性下列说法正确的是(C)
A.line-height设置行高大小单位为px
不设单位:代表倍数相对于自身的font-size的倍数
(解析:单位可以为em,px ,%,)
B.默认值为1em(解析:line-height的默认值是:normal)
C.该属性可继承
D.Line-height的值为2和200%是一样的
分析:line-height的单位有三个px,em,%,在不设置单位的时候,它的默认属性是normal,会随着浏览器的变化而变化。下面进行分析三个单位在设置在line-height的不同,最好的是直接写数字,它的行高会随着子元素自己的font-size*倍数=line-height,但是em和%是已经固定为父元素的而继承下来,比如说父元素的font-size是12px,line-height是200%或者是2em,那么子元素的line-height就是24px继承而来。

每日一题

 var list = [1+2,1*2,1/2];
        console.log(list);    

结果:
在这里插入图片描述

第五天

  1. 常用的主流浏览器分别是—————————及其对应的内核——————————
    Chrome 以前是Webkit内核,现在是Blink内核;
    Firefox Gecko
    IE Trident
    Safri webkit
    Opera 最初是自己的Presto内核,后来是Webkit,现在是Blink内核;

  2. 下列哪个选项不是原始值?(D)
    A.”OoO”
    B.NaN(解析:NaN是非数 数字类型 number)
    C.null
    D.[]
    String ,number, Boolean,function object undefined

栈内存:原始值:string, number ,boolean null undefined
堆内存:引用值:object(对象) 数组[] function 正则表达式
3. 应用小题目
在这里插入图片描述

每日一题

//以下哪个是通过类名获取元素的方法
//document.getElementByClassname
//document.getElementById
//document.creatElement
//window.getComputedStyle

分析:第一个是通过类名获取元素(动态的),第二个是通过id获取元素,第三个是创造一个html元素,最后一个是得到元素样式。

第六天

  1. 下面函数执行的结果是什么?
	 var a = 10;
       function show(){
           console.log(a);
       }
       function foo(){
           var a = 100;
           show();
       }
       foo();

分析:虽然说show函数执行的时候,他的大环境是window,所以说window.a就是10,请注意和下面的这道题目进行区分:

 	 var a = 10;
       function foo(){
           var a = 100;
           function show(){
               console.log(a);
           }
           show();
       }
       foo();

分析:这道题目的show函数实在foo的内部,形成了闭包,所以说在打印输出a的时候,在GO中查找,所以输出100。
2. 下面函数的执行结果是什么?

"use strict"
       function foo(a){
        arguments[0]= 1;
        console.log(a,arguments[0]/1)
       }
       foo(2);

分析:在试试用严格模式之后,arguments与函数的参数列表不产生映射。
3. 下面的代码执行结果是什么?

    function Bar(cb){
    if(typeof cb !== "function"){
        return;
    }
    for(var i = 1; i < 4; i++){
        console.log(cb(i, i - 1));//i- 1 等于基底
        //radis 2 - 36 范围
       // parseInt(1,0)  零的一进制 一
       // parseInt(2,1)  二的一进制 NAN:非数
      //  parseInt(3,2)  三的二进制 NAN:非数
    }
}
Bar(parseInt)

每日一题

 console.log(123..toString());

分析:此时输出的结果是123,为什么是两个点?因为为了避免误会,第一个小数点可以看做123.0.后面的才调用toString()方法。下面是更好的写法:

		var num = 123;
        console.log(num.toString());

第七天

  1. 下面哪个选项不是typeof的返回值?

分析:typeof的返回值类型:number,string,boolean,object,function,undefined。其中typeof(null)是object。
2. 下面的输出结果是什么?

	 console.log(0 == null);
        console.log(0 == undefined);
        console.log(0 == false);
        console.log(0 == "");
        console.log(false == null);

分析:这道题目考查的知识点是比较运算符(发生隐式类型转化)。
在这里插入图片描述
在这里插入图片描述
3. 下面的代码输出的结果是什么?

console.log(+0 === -0);
        console.log([] == []);
        console.log([] == "");

分析:本道题目考查的还是比较运算符号。分为两种,一种是弱比较,要进行隐式类型转化,另外一种是强比较,直接进行比较。A选项的话,为true,因为+0和-0的补码是相同的,B选项是false,引用数据类型比较的是地址,C选项前面的[]先进行tostring方法转化为" ",所以二者相等。

第八天

1.阅读下面的代码片段,输出的结果分别是?()

console.log(1 + + + + + "1");
    console.log("100" / 0);
    console.log(0 / 0);
    console.log(true > "1");
    console.log(NaN == NaN);

分析:第一个看一看作为(1+(+(+(1)))),所以结果是2,第二个首先"100"转化为100,然后除以0,结果必定是infinity,第三个的话没有意义,所以是非数nan,第四个将左面的true转化为1,右面的"1"转化为1,二者相等,最后一个非数不等于非数,非数连自己都不认识,所以是false。
2.下面代码的执行结果是什么?

var a = 1;
    a = (++a,a++);
    console.log(a);
    a = (a++,++a);
    console.log(a);

分析:本道题目考查的知识点是()运算符号以及++a和a++的问题。括号的话会依次执行括号内的语句,最后返回的是最后一个语句,所以说第二行的代码执行就是a++变成2,a++是先用a,所以a被赋值为2。下面的()中全部被执行,所以是4.

3.下面代码的执行结果是什么?

var b = 1;
    console.log(null && ++b);
    console.log(b);

分析:&&惰性运算符,一旦前面的是假,不会执行后面的语句,所以返回的是null和1。

第九天

  //下面的代码运行之后,set中保存的是什么?
    var set = new Set();
    var a = [];
    set.add(a);
    a.push(1);
    set.add(a);
    a = [1];
    set.add(a);
    a.pop();
    set.add(a);
    set.add([]);
    set.add([1]);

分析:这道题目考查的是ES6中Set集合的相关知识,Set是一个特殊的集合,其中不允许有重复的元素,特别需要注意的是,函数,数组,对象存储的都是地址。下面我进一步一步进行分析,并写出每一步的set集合中的元素的结果。
第一步 set.add(a)之后,set集合变为[[]],接下来a中添加了1,再将a添加到set集合中,但是a的地址没有变,所以说set集合还是变为了[[1]],接下来 a = [1];这是赋值了一个新的数组,因为地址不同,然后加入到集合中,但是之后又进行了弹出,所以说,set集合变成了[[1],[]],接下里加入a,但还是地址一样,无法加入,接下来的 set.add([]);
set.add([1]);都可以加入,因为都是全新的地址,所以说,最后的set集合变成了[[1],[],[],[1]]。

第十天

  1. 下面代码的输出结果是什么?
  function bar (){
            a = 10;
            function a(){};
             console.log(a);
        }
        bar();
        console.log(a);

分析:考查的是预编译的相关知识。分析bar函数中的AO对象,预编译的过程分为三个步骤,1.变量声明,形参 2.形参实参相统一 3. 函数声明整体提升。在AO预编译的换届的时候,已经对a进行了函数声明,在接下来对函数的执行过程中,a = 10进行了覆盖,所以说在控制台打印输出的时候,输出的结果是10。但是在外部,没有对a变量的声明,也没有进行未经声明的赋值,所以说,最后会报错。
2. 下面代码的执行结果是什么?

 var a = 10;
        var b = 20;
        function swap (a,b){
            var temp = a;
            a = b;
            b = temp;
        }
        swap(a,b);
        console.log(a,b);

分析:在进行传入的时候,传入的是a,b的值,而不是a,b,所以说a,b的值没有发生变化。但是,对比一下下面的两个例子:

var a = 10;
        var b = 20;
        function swap (){
            var temp = a;
            a = b;
            b = temp;
        }
        swap(a,b);
        console.log(a,b);
var obj = {a:10,b:20};
        function swap (a,b){
            var temp = a;
            a = b;
            b = temp;
        }
        swap(obj.a,obj.b);
        console.log(obj);
  1. 请判断下面的代码。
console.log(0.3-0.2 == 0.1);

分析:由于计算机中对于浮点数的存储是不精确的,所以说0.1的结果是
在这里插入图片描述
所以不正确。

第十天

1.下面代码的执行结果是什么?

  var value = "web";
        function bar(){
            var value = "duyi";
            function foo(){
                console.log(value);
            }
            return foo;
        }
        bar()();

分析:考查函数的返回值和闭包的概念。bar函数执行之后返回的是一个foo函数,foo是在bar函数的内部声明,所以说打印出的就是duyi。
2. 编写一段代码,可以实现下面的功能。
在这里插入图片描述
分析:addCounter是一个函数,返回的是一个函数,这个函数也有返回值来返回最终的值。
结果展示

 function addCounter(n){
            return function (){
                return arguments[0] + n;
            }
        }
        console.log(addCounter(1)(2));
  1. 下面代码的执行结果是什么?
function a(){
            a = 100;
            console.log(a);
        }
        a();
        console.log(a);

分析:两个输出的都是a,第一个输出a是因为a=100未经声明就进行赋值提升到全局,然后输出的时候艳这作用域链找到输出,第二个输出a是因为a=100覆盖了function a(go对象)。
4. 下面代码的输出结果是什么?

    var a= 10;
        (function a(){
            a = 100;
            console.log(a);
        }());
        console.log(a);

分析:立即执行函数(自执行函数)的两个特征:1.函数名称的标识符只能在函数的内部进行访问,在函数的外部是无法访问的。2.绑定为函数名的标识符,不能再绑定其他符号(再给a赋值时不起作用的)。
结果:function a(){…} 10
5. 下面代码的输出结果是什么?

 var bar = (function (arg){
            arguments[0] = '你好';
            return function(){
                console.log(arg + arguments[0])
            }
        })('再见')
        bar('duyi');

分析:bar在赋值的时候,是一个立即执行函数的结果,是一个函数,传入的参数是duyi,而立即执行函数中的arg被赋值为再见,在赋值为你好。最终的输出结果就是你好,duyi。
6. 下面代码的输出结果是什么?

 if(function Bar(){}){
            console.log('bar');
        }
        console.log(typeof Bar);

分析:对象在进行隐式类型转化的时候会被转化为true,所以if函数会进行运行,打印输出,最后输出Bar的时候,if语句中的判断已经将Bar进行了转化,所以就是undefined。
7. 编写一个程序。
在这里插入图片描述

 function Hero(){
            this.health = 50;
            Hero.prototype.attack = function (){
                this.injured(parseInt(Math.random()*60+20));
            }
            Hero.prototype.injured = function (num){
                if(num>this.health){
                    console.log('哦,我死了!');
                    this.health = 0;
                }else{
                    console.log('我还能挺一回合!');
                    this.health -= parseInt(Math.random()*60+20);
                }
            }
        }
        var h = new Hero();
        h.attack();

第十一天

1.下面代码的输出结果是什么?

		 console.log(1 + undefined);
        console.log(1 + null);
        console.log(null + undefined);
        console.log(true + false);
        console.log(3 + '6');
        console.log(2 + []);
        console.log(2 + {a : 12});
        console.log([] + {});
        console.log({} + []);
        console.log({} + []);
        console.log(3 + {});
        console.log({} + 3);

分析:这道题考查js中加法运算符号中的隐式类型转化的相关知识,要首先明确的是,数字加数字,字符串加字符串。所以说undefined使用Number()转化之后变成NaN,null经过转化之后的结果是0。所以说第一个的结果是NaN,第二个的结果是1,第三个的结果是NaN,第四个的结果是1,第五个的结果是‘36’。
对于引用值来说,要进行隐式类型转化,首先要考虑的是valueof方法,观察返回值是原始值还是引用值,如果依然是引用值,那么就要调用tostring方法,所以说[].valueof依旧是一个数组,所以在调用toString()方法之后是一个“”空字符串,所以是,第六个的结果是2,下面的结果只要是引用值,那就先进行valueof方法,观察返回结果是不是原始值,由于数组和对象的返回值是""和[object Object],下面的问题都迎刃而解了。

第十二天

1.说说你对new的理解。

 //new 操作符具体干了什么?
        function Foo(bar){
            // var this = {};
            // this.__proto__ = Foo.prototype;
            this.bar = bar;
            this.fn = function (){};
            // return this;
        }
        var f = new Foo(1);
        console.log(f);
        // 1.返回对象this
        // 2.通过this调用的属性和方法将会被赋值
        // 3.this.__proto__连接到Foo.prototype的原型链
        // 4.隐式的返回this

第十三天

1.说出下面的代码输出结果是什么?如何进行改正使得代码输出0,1,2,3,4?

  for(var i = 0;i<5;i++){
            setTimeout(function(){
                console.log(i);
            },i*1000)
        }

结果展示:
在这里插入图片描述

分析:下面的代码的输出的结果是5个5,因为在js中,settimeout以及setinterval都是优先级低于主函数的进行,所以当进行到5快要跳出for循环的时候才进行了settimeout的执行,改变的方式有两种,一种是使用立即执行函数进行闭包传参,第二种是用es6中的let方法,结合块级作用于来进行。下面介绍的方法是利用立即执行函数。

     for(var i = 0;i<5;i++){
            (function(i){
                setTimeout(function(){
                console.log(i);
            },i*1000)
            })(i)    
        }

结果展示:
在这里插入图片描述

第十四天

1.分析下面的代码段,说出输出的是什么?

        var name = "window";
        var obj = {
            name : "obj",
        };
        function show (){
            console.log(this.name);
        }
        show.call(obj);
        show();

分析:本道题考查的知识点是call,this的指向问题。show.call(obj)这段代码段使用call来改变this的指向,从而相当于obj.name打印出来,所以第一个输出的是obj,第二个show函数执行,此时show函数声明与执行都在window下面,所以此时的this指向window,输出的是window。

   "use strcit"
        var name = "window";
        var obj = {
            name : "obj",
        };
        function show (){
            console.log(this.name);
        }
        show.call(obj);
        show();

分析:使用严格模式之后,不能在全局直接使用this,this应该有明确的指向,所以说第二个show函数执行的话,会报错。
知识点:document.getElementByTagName是根据结点获取节点的函数,返回的是类数组,不是数组。

第十五天

实现一个不需要新的参数就可以使得参数a,b的调换

  function swap(a,b){
            a = a + b;
            b = a - b;
            a = a - b;
        }

分析:因为不能有新的参数,所以说我们要先存储两个数的值在a当中,通过整合之后的相减得到b的值,最后得到a的值。

第十六天

阅读下面的代码,并说出相对应的输出

        var arr = [];
        arr[0] = 'a';
        arr[1] = 'b';
        arr.foo = 'c';
        console.log(arr.length);
        arr.length += arr.foo.length;
        console.log(arr.length);

结果
在这里插入图片描述
分析:声明一个数组并进行前两位的赋值,arr.foo = 'c’这个代码段是进行数组中有一个属性foo,它的值是c,类似于对象,但是arr.length += arr.foo.length强制使得arr的长度加一,所以第二位是空,最后的长度是3。
arr的最终状态
在这里插入图片描述

第十七天

1.阅读下面的代码,并说出代码输出的结果

  var count = 0;
      for (var i = 0; i < 10; i++) {
        // 执行10次
        // 1s 后执行
        setTimeout(function () {
          count += i;
        }, 0);
      }

结果:结果是100。
分析:在js中,函数有一定的优先级顺序,主函数的优先级是要高于settimeout以及setinterval的优先级,所以说在for循环执行十次的基础上,即当i变成10之后,执行setinterval中的函数,所以说十次之后的值变为100.
2.编程题目:请用优雅的方式输出今天是星期几?

 console.log('今天是星期'+ "日一二三四五六".charAt(new Date()).getDay())

分析:既然是用优雅的方式,那么我们肯定不是直接写进去,当然想到的是date对象来构造时间,构造时间对象之后,调用其中的 getDay() 来获取当天的从 Date 对象返回一周中的某一天 (0 ~ 6),可以得知获得的是一个数字,但是我们想要的是中文的日期,所以说我们要做的就是能否自己写一个字符串,然后通过使用charAt方法来定位到我们想要的结果。
知识点
在这里插入图片描述
在这里插入图片描述

第十八天

阅读下面的代码并说出执行结果

<div id="test" style="height: 40px; width: 40px; background-clip: blue;" ></div>
 var test = document.getElementById("test");
    console.log(test.style.height);
    test.style.height = '20';
    console.log(test.style.height);

结果:40px 40px
分析:通过getElementById获得到dom元素div#test之后,他的属性应该是包含单位的,而且我们在赋值的时候也应该加上单位,所以说第二次赋值为20是无效的,仍然是之前的40px。
小知识点:getComputedStyle可以设置元素的样式
下面代码的执行结果是什么?

<div id="test2" style="height: 40px; width: 40px; background-color: red; padding: 10px; border: 1px solid lime; margin: 1px;"></div>

var test2  = document.getElementById("test2");
    console.log(test2.offsetHeight);
    console.log(test2.clientHeight);

结果:62 60(注意没有单位)
分析:offsetHeight需要加上元素的border,但是clientHeight不需要。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值