js笔记

1.整数转任意位小数

    function formatToFixed (val){

        let sNum = val; 

        let nNum = parseFloat(sNum); 

         if(!isNaN(nNum)) { 

            return nNum.toFixed(2); 

           }else{

                 return val;

             }

        }

2. reduce函数可以完成叠加,例:

        var items = [10, 120, 1000];

        //参数1:回调函数;  参数2: 初始值

        //reduce返回值不是一个数组,结果类型和形参初始值类型相同

         var total = items.reduce((sumSoFar, item)=>sumSoFar + item, 0);

         console.log(total); // 1130

3.合并json数据

function extend(des, src, override) {

if(src instance of Array) {

for(var i = 0, len = src.length; i < len; i++)

extend(des, src[i], override);

}

for(var i in src) {

if(override || !(i in des)) {

des[i] = src[i];

}

}

return des;

}

var a = {

"a": "1",

"b": "2"

}

var b = {

"c": "3",

"d": "4",

"e": "5"

}

extend(a, b);

console.log(JSON.stringify(a));

4./*解决使用vue进入页面闪现源码*/

[v-cloak] {

display: none;

}

在包裹的元素上添加v-cloak即可(例如:<div id="xxx" v-cloak></div>)

5.访问对象也可以 对象["键"],如person["name"]

6.局部 JavaScript 变量

    在 JavaScript 函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它。(该变量的作用域是局部的)。您可以在不同的函数中使用名称相同的局部变量,因为只有声明过该变量的函数才能识别出该变量。只要函数运行完毕,本地变量就会被删除。

7.JavaScript 变量的生存期

    JavaScript 变量的生命期从它们被声明的时间开始。

    局部变量会在函数运行以后被删除。

    全局变量会在页面关闭后被删除。

8.向未声明的 JavaScript 变量分配值

    如果您把值赋给尚未声明的变量,该变量将被自动作为 window 的一个属性。如carname="Volvo";将声明 window 的一个属性 carname。非严格模式下给未声明变量赋值创建的全局变量,是全局对象的可配置属性,可以删除。

9.作用域

    如果变量在函数内没有声明(没有使用 var 关键字),该变量为全局变量。

    在 HTML 中, 全局变量是 window 对象: 所有数据变量都属于 window 对象。

10.转义

    反斜杠是一个转义字符。 转义字符将特殊字符转换为字符串字符:转义字符 (\) 可以用于转义撇号,换行,引号,等其他特殊字符。

11.typeof x :检测变量数据类型,并返回(string/object/array)

12.=== 为绝对相等,即数据类型与值都必须相等。

13.字符串方法

charAt() 返回指定索引位置的字符

charCodeAt() 返回指定索引位置字符的 Unicode 值

concat() 连接两个或多个字符串,返回连接后的字符串

fromCharCode() 将 Unicode 转换为字符串

indexOf() 返回字符串中检索指定字符第一次出现的位置

lastIndexOf() 返回字符串中检索指定字符最后一次出现的位置

localeCompare() 用本地特定的顺序来比较两个字符串

match() 找到一个或多个正则表达式的匹配

replace() 替换与正则表达式匹配的子串

search() 检索与正则表达式相匹配的值

slice() 提取字符串的片断,并在新的字符串中返回被提取的部分

split() 把字符串分割为子字符串数组

substr() 从起始索引号提取字符串中指定数目的字符

substring() 提取字符串中两个指定的索引号之间的字符

toLocaleLowerCase() 根据主机的语言环境把字符串转换为小写,只有几种语言(如土耳其语)具有地方特有的大小写映射

toLocaleUpperCase() 根据主机的语言环境把字符串转换为大写,只有几种语言(如土耳其语)具有地方特有的大小写映射

toLowerCase() 把字符串转换为小写

toString() 返回字符串对象值

toUpperCase() 把字符串转换为大写

trim() 移除字符串首尾空白

valueOf() 返回某个字符串对象的原始值

14.null是一个只有一个值的特殊类型。表示一个空对象引用。用 typeof 检测 null 返回是object。你可以设置为 null 来清空对象

    var person = null; // 值为 null(空), 但类型为对象

15.你可以设置为 undefined 来清空对象:

        var person = undefined; // 值为 undefined, 类型为 undefined

16.undefined 是一个没有设置值的变量,typeof 一个没有值的变量会返回 undefined

undefined 和 null 的区别:

    null 用于对象, undefined 用于变量 ;

    对象只有被定义才有可能为 null,否则为 undefined; 

    null 和 undefined 的值相等,但类型不等:

    typeof undefined             // undefined

    typeof null                  // object

     null === undefined           // false      

     null == undefined            // true  

请注意:NaN 的数据类型是 number

              数组(Array)的数据类型是 object

              日期(Date)的数据类型为 object

              null 的数据类型是 object   

               未定义变量的数据类型为 undefined   

17.constructor 属性返回所有 JavaScript 变量的构造函数。

            "John".constructor // 返回函数 String()  { [native code] }

18.全局方法 String() 可以将数字转换为字符串。

19.Date方法

        getDate() 从  Date 对象返回一个月中的某一天 (1 ~ 31)。

        getDay() 从  Date 对象返回一周中的某一天 (0 ~ 6)。

        getFullYear()  从 Date 对象以四位数字返回年份。

        getHours()  返回 Date 对象的小时 (0 ~ 23)。

        getMilliseconds()  返回 Date 对象的毫秒(0 ~ 999)。

        getMinutes()  返回 Date 对象的分钟 (0 ~ 59)。

        getMonth()  从 Date 对象返回月份 (0 ~ 11)。

        getSeconds()  返回 Date 对象的秒数 (0 ~ 59)。

        getTime()  返回 1970 年 1 月 1 日至今的毫秒数。

        getTime()  返回 1970 年 1 月 1 日至今的毫秒数。

20.全局方法 Number() 可以将字符串转换为数字。空字符串转换为 0。

其他的字符串会转换为 NaN (不是个数字)。

        Number(" ") // 返回 0 

        Number("") // 返回 0

        Number("99 88") // 返回 NaN

21.parseFloat()解析一个字符串,并返回一个浮点数。

      parseInt()解析一个字符串,并返回一个整数。

22.可用于将变量转换为数字

        var y = "5"; // y 是一个字符串

        var x = + y; // x 是一个数字

23.全局方法 Number() 可将布尔值转换为数字。

        Number(false)     // 返回 0

        Number(true)      // 返回 1

24.全局方法 Number() 可将日期转换为数字。

25.debugger 关键字用于停止执行 JavaScript,并调用调试函数。

这个关键字与在调试工具中设置断点的效果是一样的。

如果没有调试可用,debugger 语句将无法工作。

26.变量提升:函数声明和变量声明总是会被解释器悄悄地被"提升"到方法体的最顶部。

        JavaScript 中,函数及变量的声明都将被提升到函数的最顶部。

        JavaScript 中,变量可以在使用后声明,也就是变量可以先使用再声明。

JavaScript 只有声明的变量会提升,初始化的不会。
var x = 5; // 初始化 x

elem = document.getElementById("demo"); // 查找元素 

elem.innerHTML = x + " " + y;// 显示 x 和 y  // x为5,y为undefind

var y = 7; // 初始化 y

实例的 y 输出了 undefined,这是因为变量声明 (var y) 提升了,但是初始化(y = 7) 并不会提升,所以 y 变量是一个未定义的变量。

27.函数提升

        1、函数提升:就是把函数声明提到作用域的顶部

        2、函数有两种表达方式:函数声明方式和函数表达方式

        3、只有函数声明方式才能提升

28.** 块级作用域**

        在每个代码块中 JavaScript 不会创建一个新的作用域,一般各个代码块的作用域都是全局的。ES5只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景

     1、避免由于变量提升,内层变量可能会覆盖外层变量; 

    2、避免用来计数的循环变量泄露为全局变量;  

    3、ES6允许块级作用域的任意嵌套, 外层作用域无法读取内层作用域的变量, 内层作用域可以定义外层作用域的同名变量;  

    4、块级作用域可以替代立即执行的匿名函数的功能 

    5、ES5(严格模式)规定,函数只能在顶层作用域和函数作用域之中声明,不能在块级作用域声明

     6、ES6允许在块级作用域之中声明函数,只在大括号情况下可行,没有大括号会报错;函数声明类似于var,存在函数提升  

       例: {{{{ {let insane = 'Hello World'} console.log(insane); // 报错}}}};

             {{{{ let insane = 'Hello World'; {let insane = 'Hello World'}}}}};   

注意:环境导致的行为差异太大,应该避免在块级作用域内声明函数。 若需要,也应该写成函数表达式,而不是函数声明语句

28.href="#"与href="javascript:void(0)"的区别

        # 包含了一个位置信息,默认的锚是#top 也就是网页的上端。在页面很长的时候会使用 # 来定位页面的具体位置,格式为:# + id

        而javascript:void(0), 仅仅表示一个死链接。

29.** 暂时性死区**

        只要一进入当前作用域,所要使用的变量就已经存在,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量。

30.** let与var区别**

//不同之处

    1、let声明的变量只在let所在的代码块内有效

    2、var有变量提升,则声明之前使用不会报错;let没有变量提升,声明前使用会报错

    3、let存在暂时性死区,只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响

     4.ES6规定,若区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡在声明前就使用这些变量,均报错。

    5.ES6规定暂时性死区和let、const语句不出现变量提升,主要是为了减少运行时错误。

    6.let不允许在相同作用域内,重复声明同一个变量 ,var可以

31.在( )和[ ]前的语句不加分号会报错;

32:原型链(也叫隐式原型链):

        访问一个对象的属性时,先在自身里面找,找到了返回;如果没有在沿着__proto__这条链yi一级一级向上找,如果找不到返回undefined;

        1>.函数的显示原型指向的对象默认是空的Object对象实例对象(但Object不满足);

        2>.所有函数都是Function的实例(包含Function);

        3>.Object的原型对象是原型链的尽头;

33.闭包理解:

        闭包是嵌套的内部函数

    产生闭包的条件:

            1>.函数嵌套;

            2>.内部函数引用外部函数的变量或函数;

            3>.执行定义内部函数就会产生闭包,不用执行内部函数;

       外部函数调用几次就产生几个闭包(外部函数调用,才会声明内部函数);

    闭包的生命周期:

                产生:定义内部函数时产生;

                死亡:在嵌套的内部函数成为垃圾对象时消失;

    闭包缺点:会造成内存泄漏:

            解决办法: 1>.能不用闭包就不用

                            2>.要及时释放;

    内存溢出:所需要的内存空间大于剩余的内存时,就会抛出内存溢出的错误

    内存泄漏:占用的内存空间没有及时释放;

                    内存泄漏的积累最终会导致内存溢出;

     造成内存泄漏的可能:

                1>.定时器或回调函数没有及时清理;

                2>.意外的全局变量;

                3>.闭包

34.//获取请求信息

var curPath = window.document.location.href;

//http://localhost:8070/map/ztreemap.html

var pathName = window.document.location.pathname;

///map/ztreemap.html

var pos = curPath.indexOf(pathName);

//获取请求地址

var Host = curPath.substring(0, pos);

//http://localhost:8070

35. 子页面中调用父页面中函数:

        window.parent.window.父页面函数();

36.添加请求头

     var param = { channel: "1", plate: "豫AB8309" };

    param = JSON.stringify(param);

    $.ajax({

        type: "POST",

        timeout: 10000,

        //dataType: 'json',

        cache: false,

        async: 'true',

        beforeSend: function (xhr) {

            xhr.setRequestHeader("Authorization", "Bearer eyJhbGciOiJIUzUxMiJ9.eyJleHAiOjE1NTkwMzM2NjAsInVzZXIiOnsieWhJZCI6MjIyMjIyLCJ5aExvZ29ubmFtZSI6ImdkcyIsInloUGFzc3dvcmQiOiJlMTBhZGMzOTQ5YmE1OWFiYmU1NmUwNTdmMjBmODgzZSIsInloTmFtZSI6ImdkcyIsInF4SWQiOjUsInloVGVsIjpudWxsLCJkc0lkIjoxLCJ5eklkIjoxLCJzaW1Db2RlIjoiMSIsIm1zZyI6bnVsbCwidmVyaWZ5IjpmYWxzZX0sInN1YiI6ImdkcyJ9.2H7DFLdRE5NzPvqa96UVIxtMUNXZ_VhfMn0JwMq3dasB12oF-aB4mioiavYoFS1L6umBOQPltZMbSCYGV0qnuA");

            xhr.setRequestHeader("Content-Type", "application/json");

        },

        url: "http://192.168.0.174:8080/api/video/getVideoUrl",

        data: param,

        success: function (data) {

            console.log(data);

        },

        error: function (err) {

        },

        complete: function () {

        }

37.select设置默认选中

    var select = document.getElementById("clId");

    for(var i=0;i<select.length;i++){

        if(select[i].value == checkedCarNO){

            select[i].selected = true;

        }

    }

38.校验车牌号码

//新能源车牌号正则

var xreg=/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/;

//普通车牌号正则

var creg=/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/;

/**

* 校验车牌号码

* @param carNo 车牌号码

* @returns

*/

function carNoReg(carNo){

if(carNo.length == 7){

return creg.test(carNo);

}else if(carNo.length == 8){

return xreg.test(carNo);

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容

  • 第一章1,什么叫程序:程序就是计算机按照人类完成事物的步骤和逻辑,通过计算机命令来逐步执行最终实现目标的一种机器语...
    悟名先生阅读 942评论 0 4
  • 1、isArray方法Array.isArray方法用来判断一个值是否为数组。var a = [1,2];type...
    秋秋秋web阅读 248评论 0 0
  • js简介 Js是一种基于事件和对象驱动的解释性、松散性的语言。 一切皆对象 javascript 布兰登艾奇 ...
    塔库纳玛哈哈阅读 1,194评论 0 2
  • js 基础 var val = (1,2,4)val //4 var obj = {}Object.defineP...
    jobn_joy阅读 336评论 0 1
  • 在JavaScript中,一切都是对象。 使用深度优先遍历,element是一个DOM元素,selectors是一...
    garble阅读 563评论 0 1