JavaScript进修笔记

  • 一切的web开辟都是【要求】+【响应】
  • 引荐JavaScript中运用单引号援用字符串,HTML中运用双引号,防备争执
  • JavaScript代码、网页代码实行递次是从上到下顺次实行
  • <noscript></noscript>标签,在浏览器不支撑JavaScript内容时会展现noscript标签内的内容

    <noscript>
        <p>本页面须要浏览器支撑(启用)JavaScript</p>
    </noscript>
  • 经由历程src属性加载外部script文件时,不应该在其<script></script>标签内再包括其他分外的JavaScript代码。由于纵然包括了其他的代码,也只会下载并实行src属性内的外部script剧本文件,嵌入的分外代码会被疏忽。
  • 当代web运用程序平常都把悉数的JavaScript援用放在<body>元素中页面内容的背面,使页面内容呈如今浏览器中后再剖析和实行JavaScript代码,如许会使得浏览器窗口显现空白页面的时刻收缩,让用户觉得页面翻开更快了。
  • 假如一个<script>代码块中有语法错误,那全部该script块中的代码都不实行了,然则不会影响其他的script代码块实行
  • JavaScript言语有数据范例区分,然则在JavaScript中声明变量不须要写数据范例,一致运用var来声明变量(“强范例言语”在编译的时刻就要肯定变量的数据范例并分派响应长度的内存空间,而JavaScript是“弱范例言语”,没有编译历程,是在运转的历程当中肯定数据范例的,故支撑“动态范例”)
  • JavaScript变量定名划定规矩:以字母,下划线或许$开首,中心能够包括字母,数字,下划线以及$。定名变量时,用下划线分开各个单词;定名函数时,用驼峰定名法
  • JavaScript许可程序员直接对变量赋值而无需事前声明,这在很多程序设计言语中都是不许可的。在JavaScript剧本中,假如程序员在对某个变量赋值之前未声明,赋值操纵将自动声明该变量。
  • JavaScript共有6中数据范例:Boolean,Number,String,Undefined,Null,Object。前五种为数值范例(基础范例),Object为援用范例
  • ==与===的区分:==疏忽数据范例,先做数据范例转换再推断;===严厉推断,数据范例也作为推断规范(不相等的比较操纵符,!=,!==),JavaScript的switch内部采纳的是===严厉推断
  • 当运用了一个没有声明的变量时,浏览器会报错。故在运用变量之前,能够先经由历程type of校验变量是不是可用(变量的值为null或undefined时不可用)

    if (typeof (m) != 'undefined' && m != null ){
        alert('变量可用')
    }else {
        alert('变量不可用')
    }
  • 什么情况下要显式的将一个变量赋值为null?
    在一个变量运用终了的时刻,能够将变量显式的赋值为null,这个时刻这个变量所指向的对象就能够被渣滓回收了
  • null转换成数字范例为0,undefined转换成数字范例为NaN
  • 在页面中声明的变量,在全部页面中的任何一个处所都能够接见;在要领内部中定义的变量,其作用域只是该要领内部
  • 在声明变量的时刻假如不写var关键字,那末该变量会是一个全部页面都能够接见的“悉数变量”。所以发起声明变量的时刻肯定要写var关键字,防止运用“全局变量”
  • eval要领会把字符串当作js代码来剖析实行
  • JavaScript中没有要领重载的观点,所以碰到雷同要领名的要领时,末了一次定义的要领会掩盖之前定义的同名要领。
  • JavaScript中的要领能够不定义形参,由于不管是不是定义形参,末了通报的参数都是存入arguments对象中。
  • JavaScript中具有函数预剖析功用,在实行代码之前会对一切的函数举行预剖析,将一切函数都先提取出来,并完成同名函数的掩盖
  • JavaScript中同时具有变量的预剖析功用,故在函数内部定义的变量(不管这个变量定义的位置在哪),在全部函数中都能够运用。
    假如碰到“全局变量”和“局部变量”争执时,优先运用“局部变量”
    注重:变量的预剖析只剖析声明,不剖析赋值
  • 匿名函数没有预剖析功用,是从上到下顺次实行的
  • 当一个函数,被直接挪用时,那末它就是一个一般的函数;当经由历程关键字new来挪用一个函数时,这个函数就叫做组织函数
  • JavaScript经由历程prototype原型对象完成继续、
  • 平常情况下,prototype原型对象中平常只存储要领,不存储属性。
  • 函数的prototype原型对象中的值是只读的,不能赋值,假如尝试为原型对象中的值赋值那末会为该对象增加一个同名的属性,并赋值为新的值。
  • 原型对象对应的栈内值是只读的,栈内存储的运用范例对象是存储的地点,这个地点也是只读的,所以地点不能修正,然则能够修正该地点所对应的存储内容。
  • 页面加载终了,页面上一切元素悉数都加载终了后会挪用window.onload要领
    在body标签内写onload要领和window.onload是一样的
  • 什么样的代码须要放到window.onload要领里?
    假如代码接见到了页面中的某个元素,那末就须要放在window.onload里。
    由于网页剖析是从上至下顺次实行的,而且JavaScript代码是马上实行的,
    所以为了防备JavaScript代码实行时,所用到的元素还未在页面中加载出来,就须要将该js代码放到window.onload要领里。
  • 想知道一个对象的一切属性,用for-in轮回输出

    for (var key in resultObject) {
        console.log("键", key);
        console.log("值", resultObject[key]);
    }
  • 猎取事宜的兼容要领:

    function(e){
        var event = window.event || e;
    }
  • window.event.srcElement.id 最初触发事宜的元素id(只兼容IE)
    event.target.id 最初触发事宜的元素id(火狐浏览器)
    兼容写法:

    var target = event.srcElement || event.target;
  • 事宜冒泡:
    点击元素时,不仅会触发其本身的点击事宜,还会触发其一切父规划的点击事宜。
    阻挠事宜冒泡:

    1、window.event.cancelBubble = true;
    2、event.stopPropagation(火狐浏览器)
  • 建立元素:var obj = document.createElement(‘a’);
    增加子元素: xxx.appendChild(obj);
    删除子元素:xxx.removeChild(obj);
  • 数组拼接要领:
    1、resultList.puch.apply(resultList,targetList);
    2、var resultList = list1.concat(list2,list3);
    原文作者:RaoMeng
    原文地址: https://segmentfault.com/a/1190000015811053
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞