一.变量作用域
1.函数内部没有变量,则逐层向外访问;
2.在函数体外的变量是全局变量(无论有没有var声明);
3.在函数体内有var声明的变量是局部变量,没有var声明的变量是全局变量;
4.变量声明只声明一次(对象的属性是唯一的),在用时是已经声明好了的变量;
二.算数表达式
1.+:数字相加话字符串拼接:
(1)如果其中一个是操作对象,则js会自动把它转换成原始类型的值(优先调用valueOf()方法,在调用toString()方法;(数组、object对象、函数)调用valueOf(),结果为本身;);
(2)如果其中一个操作符是字符串,另一个也会转成字符串,进行拼接;
(3)如果两个操作数是数字,直接加法操作;
2.一元操作符
(1)++,-- 前置型先做加一或减一运算再做其他运算;后置相反;
// var a=5,b=6;//b---7
// console.log(--a);//a=a-1
//
// console.log(a);//4---5---4
//
//
// console.log( (a++)-(b++)+(a--) )//3
// console.log(a);
3.减乘除取余 结果一定是number 类型
// str=null-5-undefined
// console.log(str)//NaN
//
//
// console.log( 0.23/0 );//Infinity
// console.log( 0*Infinity );//NaN
//
// var num=100;
// console.log(num%5)
// var str;
// console.log( str=null+5+undefined+NaN+"");//"NaN"
//
// if(str){
// console.log("这是个真值")
// }
三.(数组、object对象、函数)调用valueOf(),结果为本身;
四.new Date当前系统时间
五.函数定义表达式必须是用function 开头的才能有函数提升
console.log(fn);//undefined
// console.log(fn())
var fn=function(){
console.log(123);
}
console.log(fn);//函数体
console.log( fn() )
var arr=new Array(1);
console.log(arr.length);
六. 如果其中一个操作数是引用类型,优先调用valueOf求值后可以进行加法运算,则加起来;不行再调用toString,再进行字符串拼接
var num=function(){};//[],{name:"fiag"}
//(数组/Object对象/函数)调用valueOf(),结果是他本身
console.log(num.valueOf()==num)//true
console.log( num+100 );//function(){}100
var myarr=new Boolean(true);
console.log(myarr.valueOf());//true
console.log(myarr+100);//101
七.逻辑运算符
1.逻辑非:结果一定是布尔类型
var vari=!NaN;
console.log(vari);//true
2.逻辑与&&:短路操作,发现false 类型的值就停止;操作结果可以是任意类型的值
console.log( undefined&& 123 );//undefined
console.log( {}&&123 );//123
console.log( "dgkahd"&&"" );//""
console.log( null&&document.write("优秀") );//null
3.逻辑或|| :短路操作,发现true 类型的值就停止;操作结果可以是任意类型的值
console.log( "0"&&false||alert(1) )
console.log(0||undefined);
八.练习题
var str=false+1;
document.write(str); // “1”
var demo = false ==1;
document.write(demo); //false
if(typeof(a)&&-true + (+undefined)+""){
document.write("基础扎实"); //打印
}
if(11+"11"*2==33){
document.write("基础扎实") //打印
}
!!" "+!!""-!!false||document.write("你觉得能打印,你就需要努力了!");
</script>
</body>
</html>