前端笔试题1

var result=0;

function test(result){

 result=1;

}

test(2);

函数作用域下的变量在函数执行结束后就释放了.

result在方法内作为形参它的作用域仅限于这个方法,因此方法内的result=1并不会更改外界的result值

function Test(name) { }
Test.name='Tom';
Test.prototype.name="John";
var result = (new Test('JK')).name;

 不选Tom的原因是, 在ES5语法里, 构造函数的属性和方法必须放到函数的原型上, 实例才继承得到.

有关滚动条ScrollHeight滚动内容高度。clientHeight可视内容高度 ScrollTop滚动过的高度 

  • ES6新特性

1、let 和 const 的块级作用域

let 关键字禁止变量提升,要先定义后使用,而且只作用于它所定义的块级作用域中,常用于for 或 if 之类的结构中。

const 是在let 的基础上添加了一个只读属性,即变量一旦声明过后就不允许在修改,这里是不允许修改定义的地址,而不是不可以修改他内部的属性值。

2、数组的解构、对象的结构

const arr = [100, 200, 300]
  // 都获取
  const [a, b, c] = arr // a = 100 b = 200 c = 300
  // 只获取特定的值
  const [, , c] = arr  // c = 300
  // 对于的数组长度超过,会返回undefined
  const [a,b,c,d,e] = arr // a = 100, b = 200 c = 300  d = undefined e = undefined
  // 还可以设置默认值
  const [a,b,c,d = 400,e = 500] = arr // a = 100, b = 200 c = 300  d = 400 e = 500

3.默认参数和剩余参数 

function add (a = 0 ,b = 1) { }

这里要说明的是,一定要将有默认值的参数放到没有默认值参数的后面位置(即出现在参数列表的最后),因为我们的参数是按照次序传递的,如果没有放到最后,我们的默认值将无法正常工作 

1、剩余操作符,用来接收从当前位置剩余参数的操作。    新增了...的操作符

function redece (...arg) {
	console.log(arg) // 这里的arg是一个伪数组,是传递进来的实参数组,并且这个操作只能放到最后一个参数的位置上进行(只能使用一次),否则影响前面参数
}
const arr = ['foo', 'fn', 'functions']

console.log(...arr) // ES6(spread)写法

4.箭头函数

箭头函数 (参数列表)=> {函数体} ,在函数体中只有返回值的情况下, 大括号可以省略。

const fn = n => n+1
const fn1 = (n = 3, m = 2) => {
	return n + m
}

箭头函数的特点:

1、简化的函数的书写格式,使函数看起来更加容读和书写

2、它没有this的机制,不会改变this的指向,任何情况下都不会改变

5 、对象字面量的增强

对于对象用法的增强,主要表现在:

1、如果想给对象的属性赋值一个变量值,并且该变量名和属性名一样,则可以省略写法。

2、在对象中的方法也可以省略写,当方法名和属性名相同时,省略冒号,这里的this是指向调用对象方法的对象

3、对于属性名的命名,必须使用明确的值,在es2015中,可以使用[]的方式对对象属性名进行命名

const name = 'df'
// 1、
const obj = {
 foo: 'foo',
 name   //这里的name名字相同,可以省略写
 
 // 2、
 // fn : function fn () {console.log('eeeee...')}
 // es2015中可以用
 fn () {console.log('eeeee...')}
 }
 
//  3、
// obj.Math.random():123  //写法是错误的
// obj[Math.random()]:123
// 在es2015中,新增了写法
obj[Math.random()] = 123

BigInt 是一种内置对象,它提供了一种方法来表示大于 2^53 - 1 的整数 

Eventloop(JS执行机制)

console.log(1)
const promise=new Promise((resolve,reject)=>{
    console.log(2)
    resolve()
})
console.log(3)
setTimeout(() => {
    console.log(4)
}, 0);
promise.then(()=>{
    console.log(5)
})
setTimeout(() => {
    console.log(6)
}, 0);
console.log(7)

// 定时器是宏任务,Promise是微任务,但promise里是同步的,.then才是异步执行
//1 2 3 7 5 4 6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值