2018-12-25 js生成随机字符串

常规写法

function randomString(length,addSymbol){
    str='1234567890ABCDEFGHIGKLMNOPQRSTUVWSYZabcdefghijklmnopqrstuvwsyz';
    symbol='-/:;()$&@.,?!_\|~<>€£¥•[]{}#%^*+=';
    txt = '';
    if(addSymbol) str = str+symbol;
    if(isNaN(length)) return false;
    for(i = 0; i < length; i++){
    random = parseInt(Math.random()*(str.length+1),10);
    txt += str.split("")[random];
    }
    return txt;
}

在backbone.localstorage里发现另外一种写法

function s4() {
  const rand = (1 + Math.random()) * 0x10000;
  return (rand | 0).toString(16).substring(1); 
 # 单竖杠“|”就是转换为2进制之后相加得到的结果
}

2.undefined == void ()

在ES5之前,window下的undefined是可以被重写的,于是导致了某些极端情况下使用undefined会出现一定的差错。
所以,用void 0是为了防止undefined被重写而出现判断不准确的情况。

注: ES5之后的标准中,规定了全局变量下的undefined值为只读,不可改写的,但是局部变量中依然可以对之进行改写。

3. Set 类似 python 的tuple

prototype:

  • size 属性求set集合的大小(长度)

method:

    1. add方法用来向一个 Set 对象的末尾添加一个指定的值。
    1. clear方法用来清空一个 Set 对象中的所有元素。
    1. delete方法可以从一个 Set 对象中删除指定的元素.
    1. entries方法返回一个新的迭代器对象 ,这个对象的元素是类似 [value, value] 形式的数组,value 是集合对象中的每个元素,迭代器对象元素的顺序即集合对象中元素插入的顺序。由于集合对象不像 Map 对象那样拥有 key,然而,为了与 Map 对象的 API 形式保持一致,故使得每一个 entry 的 key 和 value 都拥有相同的值,因而最终返回一个 [value, value] 形式的数组。
    1. forEach 方法根据集合中元素的顺序,对每个元素都执行提供的 callback 函数一次。
    1. has() 方法返回一个布尔值来指示对应的值value是否存在Set对象中
    1. values() 方法返回一个 Iterator 对象,这个对象以插入Set 对象的顺序包含了原 Set 对象里的每个元素。

你可能感兴趣的:(2018-12-25 js生成随机字符串)