后续课程衔接
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。
引用类型:对象、数组、函数