后续课程衔接


JS调试

出问题了怎么定位解决?答:基础方法:console.log(),alert();高级方法:Source Panel 断点设置和调试。


异常处理

try…catch…throw

测试 > 捕捉 > 抛出:测试代码块的错误,捕捉到错误时执行的代码块,抛出的异常提示

/*try和catch成对出现*/
try{
    //在这里运行代码
}
catch(err){
    //在这里处理错误
}

Throw语句

throw语句允许我们创建自定义错误,术语:抛出异常。

<script>
function myFunc()
{
try{
    var x = document.getElementById("HX").value;

    if(x == "")    throw "empty";
    if(isNaN(x))   throw "not a number";
    }
catch(err){
    document.getElementById("mess").innerHTML = "Error:" + err + ".";
    }
}
</script>

window对象

  • Window 对象表示浏览器中打开的窗口。

  • Window 对象表示一个浏览器窗口或一个框架。在客户端 JavaScript 中,Window 对象是全局对象,所有的表达式都在当前的环境中计算。

  • JavaScript中的任何一个全局函数或变量都是window的属性

  • <script type="text/javascript">
        var name="李康很帅";
        console.log(window.name);
    </script>
    

布尔值的拓展

//非零为真,零为假
alert(true == 1);    //弹出 true
alert(false == 0);    //弹出 true

//空字符串为假,非空字符串为真
alert(false == "");    //弹出true
alert(true == "ok");    //弹出true

//NaN、undefined、null都为假
alert(false == NaN);    //弹出true
alert(false == undefined);    //弹出true
alert(false == null);    //弹出true

变量提升 和 函数提升

量提升即将变量声明提升到它所在作用域的最开始的部分

console.log(global);      //结果:undefined
var global = 'global';
console.log(global);      //结果:global

function fn () {
  console.log(a);        //结果:undefined
  var a = 'aaa';
  console.log(a);        //结果:aaa
}
fn();

//之所以会是以上的打印结果,是由于js的变量提升,实际上上面的代码是按照以下来执行的:

var global; // 变量提升,全局作用域范围内,此时只是声明,并没有赋值
console.log(global); // undefined
global = 'global'; // 此时才赋值
console.log(global); // 打印出global

function fn () {
  var a; // 变量提升,函数作用域范围内
  console.log(a);
  a = 'aaa';
  console.log(a);
}
fn();

只有函数声明才存在函数提升!

console.log(f1); // function f1() {}   
console.log(f2); // undefined  
function f1() {}
var f2 = function() {}


//之所以会有以上的打印结果,是由于js中的函数提升导致代码实际上是按照以下来执行的:

function f1() {} // 函数提升,整个代码块提升到文件的最开始<br>     console.log(f1);   
console.log(f2);   
var f2 = function() {}

值类型和引用类型

我们可以用“连锁店”和“连锁店钥匙”来理解

1)值类型理解:

变量的交换等于在一个新的地方按照连锁店的规范标准(统一店面理解为相同的变量内容)新开一个分店,这样新开的店与其它旧店互不相关、各自运营。

//把一个值类型(也可以叫基本类型)store2传递给另一个变量(赋值)时,其实是分配了一块新的内存空间,因此改变store1的值对store2没有任何影响,因为它不像引用类型,变量的交换其实是交换了指像同一个内容的地址。
function chainStore()
{
    var store1='Nike China';
    var store2=store1;
    store1='Nike U.S.A.';
    alert(store2); //Nike China
}
chainStore();

(2)引用类型理解:

变量的交换等于把现有一间店的钥匙(变量引用地址)复制一把给了另外一个老板,此时两个老板同时管理一间店,两个老板的行为都有可能对一间店的运营造成影响。

//在下面的代码中,store2只进行了一次赋值,理论上它的值已定,但后面通过改写store1的值,发现store2的值也发生了改变,这正是引用类型的特征,也是我们要注意的地方。
function chainStore()
{
    var store1=['Nike China'];
    var store2=store1;
    alert(store2[0]); //Nike China
    store1[0]='Nike U.S.A.';
    alert(store2[0]); //Nike U.S.A.
}
chainStore();
JavaScript值类型和引用类型

值类型:数值、布尔值、null、undefined。

引用类型:对象、数组、函数

results matching ""

    No results matching ""