前端题目(1)

1.

input输入框的oninput事件和onchange事件的触发时间

 oninput事件是在输入框聚焦,开始输入数字之后出发的

 onchange事件是在用户输入完之后,失去焦点的时候触发的

 

2. 

let i = 6, j = 6
for(let i = 0; i < 6; i++) {
  j = i % 6  
}
console.log(i + j)

 在for循环中使用let声明i, i是块级作用域中的。j在每次遍历的过程中被赋值,这里修改的j是全局的,所以遍历之后j的值是5。

最后打印结果是11

但是如果把for循环中的let改成var就会报错,Uncaught SyntaxError: Identifier 'i' has already been declared

这样相当于重新声明全局变量i,但是使用let声明的变量是不能重复声明的。

 

3.

transition如何起效果

transition原本有个状态,然后在原来状态上设置某个属性过渡,然后在该元素的某个事件上设置该属性的变化,当触发该事件的时候,就触发过渡效果

同时并不是所有的属性都有过渡的效果,这个属性要是具有中间值的属性。

transition与动画的区别

transition的过渡效果是需要事件触发的,而且只能触发一次,过渡只能设置开始和结果

动画是可以多次触发的,而且是不需要事件触发的,可以设置具体的某一帧的状态,设置的这个变化也是需要是有中间值的属性

    <style>
        .fath {
            height: 100px;
            background-color: aqua;
        }

        .son{
            transition: height 1s;
            background-color: blue;
        }
    </style>
</head>
<body>
    <div class="fath">
        <div class="son"></div>
    </div>
    <script>
        document.getElementsByClassName("fath")[0].addEventListener("click", function () {
            document.getElementsByClassName("son")[0].style.height = '100px'
        })
    </script>
</body>

这里运行的结果就是子元素直接突变到100px,因为子元素初始状态没有设置高度。

 

 4.

typeof的可能值有哪些

undefined, null, string, boolean, number, object, symbol, bigint, function(只多了一个function)

 

5. 隐式类型转换

false == ""    // true

false == null  //  false

![] == ''  //  true

 

6.

下列哪个方法让数组在特定条件下回终止遍历

some,filter,forEach, reduce

 

7. 

console.log(Object.prototype.toString.call(undefined))

打印   [object Undefined]  第二个单词的首字母大写

 

8.

transform如何开启硬件加速

3D绘制就会开启硬件加速

可以设置transform: translateZ(0)

 

9.

gen()返回什么

function* gen() {
            yield 1
            yield 2
            yield 3
}

返回一个生成器generator

 

10.

改变原数组的方法

pop, push, shift, unshift, sort, reverse, splice

 

11. 

let obj = {
    a: 1,
    foo: () => {
        console.log(this.a)
    }
}
obj.foo() // undefined
let obj2 = obj.foo
obj2() // undefined

箭头函数是没有this的,他的this是继承的是他所在作用域的this

foo只是obj上的一个属性,他所在的作用域是window

 箭头函数的this指向是不可能通过call,apply,bind修改的,只能通过修改所在域的this指向,来间接修改this指向

let obj = {
    a: 1,
    foo: () => {
        console.log(this.a)
    },
    foo1() {
        console.log(this.a)
    },
    foo2: function () {
        console.log(this.a)
    }
}
obj.foo()  // undefined
obj.foo1() // 1
obj.foo2() // 1
obj.foo.call(obj) // undefined

foo1是foo2普通函数的简写

 

12.

json中不能写单引号,也不能写注释。 

如若有误,请务必指正

 

posted @ 2020-08-14 15:02  kkkllo  阅读(271)  评论(0)    收藏  举报