sonsole.log(o.n,o2.n);//1,1
注意:对象中的属性是值类型
var o3={
n:[1,2,3];
m:{n:123}
}
输出数组中第二个元素:o3.n[1];
10、js中什么叫逻辑中断:
//如果传入num的值就打印num的值,如果没传入就打印没有参数
function fn(num){
if(num!==undefine){
console.log(num);
}else{
console.log("没有参数");
}
fn(123);
fn();
结果:123
没有参数
方法二:三元运算符
var number=num!==undefine?unm:"没有参数"
方法三:短路
function fn(num){
num=num||"没有参数“;
console.log(num);
}
fn(123);
|| :如果第一个为真就返回第一个表达式,如果为假,就返回第二个表达式
&& :如果第一个为假,就返回第一个表达式,如果为真,就返回第二个表达式
表达式1&&表达式2&&表达式1:验证表达式1是否满足,如果满足表达式1,就执行表达式2的代码,再返回表达式1
11、js中delete运算符的作用是:
delete 删除;
语法:boolean delete数据;
在当前作用域上删除数据;
用法:
(1)、删除数组中的一个元素
(2)、删除一个对象的属性或者方法
(3)、删除一个没有用var声明的变量
var arr=[1,2,3,4];
var isTrue=delete(arr[2]);
console.log(arr);
console.log(arr.length);
结果:[1,2,4]
4
因为delete只是把第三个元素删除,把相对应的数据变成undefine。
var o={name:"alvin"};
var isTrue=delete o.name; //o.name===o["name"] //isTrue=true;
//在jquery清除缓存框架的时候用到此方法
var n=1//如果没在后面加上分号或者逗号,默认会在后面加上分号,
m=2 //如果在1后面默认加上分号,那么m=2就变成全局变量
var isTrue1=delete n;
var isTrue2=delete m;
console.log(isTrue1);//false
console.log(isTrue2);//true
console.log(n);//1
console.log(m);//报错,is not define
//is not define 和undefine的意义不一样,前者为报错,后者没定义
12、 function fn(){
console.log(num);
console.log(123
}
fn();//报一次错,因为js出现错误后不再继续执行下面代码
fn();
有些时候代码的错误是需要处理的,但是不清楚是否会在这里报错
try catch语法:
try{
可能出现错误的代码
}
catch(e){
如果try中出现错误才会执行
}
finally{
无论是否出现异常,最后执行,可选
}
function fn(){
try{
console.log(num);
}
catch(e){//
console.log(e);//e是try异常后抓回来的异常结果,异常的内容
//console.log("num“没有定义);
}
console.log(123);
}
fn();//结果:num未定义
fn();//结果:123;
e:这里的错误有一个属性叫异常 exception
try:试一下
catch:抓住 异常
13、自己抛出异常:throw
语法:throw + 对象
一般对象是:new Error("错误消息");
function fnError(){
throw new Error("我是一个自定义错误");
}
function fnc(){
try{
fnError();
}
catch(e){
console.log(e):
}
fnc();
结果:我是一个自定义错误
14、循坏语句有四种,for、while、do...while和for..in....
15、分支语句有两种,if ....else和switch...case...
16、跳转语句:break和continue;
break:跳出循坏
continue:跳出本次循坏
函数与对象:定义函数的基本语法
1、声明式函数:
fnc();
function fnc(){
console.log(123);
}
注意:A、声明式函数最后面是不需要分号的,它不是语句;B、声明式函数在前面或者后面都可以调用
js执行:预解析,一句一句执行,分为两步走;在js执行第一条fnc()时候,早已经将fnc()的函数读取了,所以直接解析。
重点:声明式函数不允许出现在表达式中
if(false){
function fn(){
console.log(123);
}
}
fn();
结果:123
因为在执行IF的时候,function fn(){console.log(123)}这条代码不存在在表达式中,已经自动调出来了
2、函数的字面量(直接量 Lamda表达式)
fn();//函数字面量特点:函数fn();在上面是无法调用下面的语句的,结果:is not the function,
var fn=function(){//function(){}自动变成了表达式,而不是函数,所以没有值
};//后面有分号,所以不是表达式,是语句:表达式+分号
注意:此时函数做为表达式存在,凡是将数据和运算等联系起来,有值的式子就是表达式:
1 是表达式,以为 +1=1;
1+2;
new Data()
function(){} 都是表达式
3、new Funcion