sample

作者: 宋song一 | 来源:发表于2020-05-07 13:47 被阅读0次

一、var与let

JS中的块级作用域,var、let、const三者的区别

var是函数级作用域,没有块级作用域

{
 var a =10
}
console.log(a)   //10
  1. 变量i是全局的,函数执行时输出的都是全局作用域下的值。函数执行时,循环已经结束,i是不满足循环条件的值
var arr = []

for (var i = 0; i < 2; i++) {
    arr[i] = function () {
        console.log(i)
    }
}
arr[0]()
arr[1]()
// 2
// 2

当i为let时,结果为0,1.块级作用域

二、function* 生成器

1.fibnaci数列
1.1

function fib(max) {
    var a = 0, b = 1, arr = [0, 1]
    while (arr.length < max) {
        [a, b] = [b, a + b]
        arr.push(b)
    }
    return arr
}

console.log(fib(10))
/*[
  0, 1,  1,  2,  3,
  5, 8, 13, 21, 34
]

1.2 function* 生成器
yield有值返回时,为false。

function* fib1(max) {
    let a = 0, b = 1, n = 0
    while (n < max) {
        yield a;  //此处;不可省略
        [a, b] = [b, a + b]
        n++
    }
    return
}

// let f = fib1(5)
// console.log(f.next())
// console.log(f.next())
// console.log(f.next())
// console.log(f.next())
// console.log(f.next())
// console.log(f.next())

for (let x of fib1(10)){
    console.log(x)
}
/*0
1
1

三、map

  1. 请把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:['adam', 'LISA', 'barT'],输出:['Adam', 'Lisa', 'Bart']
function normalize(arr) {
return arr.map(x=> x[0].toUpperCase()+x.slice(1).toLowerCase())  //slice或substr
}

相关文章

网友评论

      本文标题:sample

      本文链接:https://www.haomeiwen.com/subject/zntaghtx.html