1.凡是在页面中使用id属性的元素,可以利用id值直接获取该标签对象。

2.DOM

  html、xml都是dom

3.凡是在html标签中的onclick等属性中输入的代码

eg:<div onclick=" alert ( this ) "></div>

这些代码相当于一个匿名函数,在onclick上绑定了执行的结构

结果等价于:

  div.onclick=function(){

   alert(this)

  }

4.事件

  事件名:click

  事件机制:浏览器的一种处理机制,在用户预先注册了事件处理函数以后,在用户触发了对应的事件行为的时候,浏览器会自发的调用已经注册的函数来响应用户的行为

  事件处理函数:被绑定的函数,即:给onclick赋值的函数

  事件响应:在用户出发的时候,浏览器自动的调用

5.浏览器的性能优化:

     a.方法访问的优化

           缩小获取某个元素的范围,

     b.自定义算法与内置算法的优化

           减少原型的搜索

           利用缓存

     c.访问搜索的优化 

          作用域搜索

6.错误类型

   1>SyntaxError:表示eval()在解析代码的过程中发生了语法错误

   2>ReferenceError:表示无效引用

   3>TypeError:表示变量或者参数不属于有效类型

   4>InternalError:js引擎内部错误的异常抛出

   5>RangeError:数值变量或者参数超出了有效范围

   6>URIError:给encodeURI()或decodeURI()传递的参数无效

   7>evalError:eval出错

7.在js中程序的运行分为两个阶段:预解析和执行

   1>在与解析的过程中出现的错误,多半是语法错误,这一类错误时无法处理的

   2>只有在运行时出现的错误才可以被try-catch

        throw  new  Error('错误的消息')

       人为的抛出异常会组织其后的代码的执行,和内置的异常逻辑是一模一样的

   异常的抛出顺序:

    在异常发出的时候,首先会在当前函数中寻找是否有try-catch,如果发现已经处理了异常,就没有任何影响,如果没有出现try-catch,那么其后的代码不再执行,跳转到其调用函数, 检查是否出现 try-catch如果有, 则继续运行( 原函数中异常之后的代码, 还是不执行 )如果没有出现 try-catch, 则继续往上抛出. 直至全局范围, 再出现错误则爆红停止运行

<script>
    function foo1() {
        console.log( 'foo1 Start ');
        foo2();
        console.log( 'foo1 finish ');
    }
    function foo2() {
        console.log( 'foo2 Start ');
        try {
            foo3();
        } catch ( e ) {
        }
        console.log( 'foo2 finish ');
    }
    var err;
     function foo3() {
        console.log( 'foo3 Start ');
        // try {
        // // 抛出一个异常
        //     err =  new Error( '我是一个自定义异常' );
        //     throw err;
        // } catch ( e ) {
        //     console.log( e == err );
        // }
        throw new Error( '我是一个自定义异常' );
        console.log( 'foo3 finish ');
    }
    foo1();
    console.log( 'over' );
</script>

      什么时候使用 throw 抛出异常?????
       1> 写一个函数是为了使用函数进行计算等运行. 因此需要输入数据, 而在实际开发中函数没有( 少用 )无效的函数.
         一般函数的返回值是需要用来做其他事情的. 那么为了保证函数可以正常返回数据. 因此可以利用一次判断
限制函数传入的参数是否正确, 否则抛出异常, 让其后的代码不在执行.

例如: Person( name, age, gender )

function Person ( name, age, gender ) {
if ( typeof name == 'string' && typeof age == 'number' && typeof gender === 'string' ) {
throw new Error( '.... 参数不正确' );
}

// 其后的代码
}
       2> 系统定义的内置异常不够使用的时候

在 js 中 try-catch 语法有 3 中( 知道即可 )
try-catch

try {

} catch ( e ) {

} finally { // 永远会执行

}

try {

} finally {

}

8.XSS脚本攻击

     1>cross site script

     2>cross css script

  

在获得用户数据的时候要输入判断信息
查询一个用户名和密码

'select * from tal where uid=\'' + uid + '\' and pwd = \'' + pwd + '\'';
如果用户输入的是
uid: admin
pwd: 123

'select * from tal where uid=\'' + 'admin' + '\' and pwd = \'' + '123' + '\'';

"select * from tal where uid='admin' and pwd = '123'";


SQL 的注入漏洞
如果用户输入的是
uid: ' or '1'='1' or '
pwd: 1234

"select * from tal where uid='" + uid + "' and pwd = '" + pwd + "'";

"select * from tal where uid='" + "' or '1'='1' or '" + "' and pwd = '" + 123 + "'";

"select * from tal where uid='' or '1'='1' or '' and pwd = '123'";

     

在html的输入框中将用户输入的内容进行转义。  

1> 一般的处理办法就是将 > 和 < 进行转义, &gt; &lt;
function parse( str ) {
return str.replace( /(>)|(<)/g, function ( _, a, b ) {
if ( a ) {
// 匹配到的是 >

}

if ( b ) {
// 匹配到的是 <
}

})
}

2> 转换一门标记语言( BBS )

9. 随机数排序

   代码的实现,在每次生成一个一个随机数以后数组就执行一次,内置的sort方法

10.

  

如果一个元素的样式是通过style属性设置的,那么在DOM操作中是可以直接获取的
* <div style="display:none"> document.getElementById(id).style.display;
* 如果一个元素的样式是通过style标签设置的,那么在DOM操作中不能直接获取
* <style>
*
* div{
* display:none;
* }
* </style>
* document.getElementById(id).style.display;是无法获取到里面属性的值
* 获取到的值是: 空
* 使用类样式的方式来解决