javascript

一、定义js代码

<script type="text/javascript">  </script>
<script type="text/javascript" src="文件名字">  </script>

 二、变量声明及赋值

var t1=123;//声明变量(全局)
var t2 = "test";	//局部变量
function test3(){
     t3 = "test";	//全局变量
     alert("--"+t3)		
}

 一道js面试题

var t1=123;
//在全局和局部有重名的变量
	
//执行函数会使用局部变量
function test(){
	alert(t1);//undefined
	var t1=234;
	alert(t1)//234
}
	
test();
	
alert(t1);//123

 三、JS调用方式

1、直接调用

 

<script type="text/javascript">
	test01();
	function test01(){
				
	alert("test");
        return false;
}
</script>
 2、事件调用

 

 

<input type="button" value=test οnclick="test01();">
 3、伪协议调用

 

<a  href="javascript:test01();" >test</a>

 ps:一个小技巧(在超链接中调用js但不跳转)

<a href="javascript:void(0)" οnclick="test01();">gaga</a>

<a href="http://www.baidu.com" οnclick="return test01();">gaga</a>
function test01(){
				
				alert("test");
				return false;
			}

 四、js数据类型

变量是没有类型的,数据是有类型的。常用的有如下6种类型:

undefined未定义 (声明了变量但从未赋值 )

boolean布尔型 (true,false) 

boolean 的定义方式:

var t = Boolean(1);//得到true

字符串string (单引号、双引号均可) 

数值number:包括整数和小数,NaN(Not a Number),Infinity, -Infinity 

1/0 得到  Infinity
 -1/0 得到 -Infinity  Number('test') 得到NaN 表示不是数字的数字类型

对象object null空  (赋值为null) null 也是一种Object

 

 五、数据类型的转换

1、Number(mix)

如果是布尔值,true和false分别被转换为1和0

如果是数字值,返回本身

如果是null,返回0.

如果是undefined,返回NaN。

如果字符串中只包含数字,则将其转换为十进制(忽略前导0)

如果字符串中包含有效的浮点格式,将其转换为浮点数值(忽略前导0)

如果是空字符串,将其转换为0

如果字符串中包含非以上格式,则将其转换为NaN ‘ssd2342df’

 

 2、String()

如果是null,返回”null”

如果是undefined,返回”undefined”

 

3、Boolean()

 

alert(Boolean(0))
alert(Boolean(false))
alert(Boolean(null))
alert(Boolean(undefined))
alert(Boolean(NaN))
alert(Boolean(""));//全是false,其他事true。特别是对象,是true如下
alert(Boolean(new Date()))

 

 六、js中的比较

 ==表示弱等号,只是比较值,不比较类型

alert(true=="true");//false  String Number Boolean 这三种数据之间比较,如果两边不是number类型的会先转化成Number类型。本题true转化为1,“true”转化为NaN
alert(NaN==NaN);//false  NaN是唯一一个和自己都不想等
alert("123"==123)//true

'' == '0'   //false 两边数据类型相同,则直接比较值

var t = {};//json 对象

alert({}=={});//false 比较地址

alert([]==[])//同上

 

alert([1]==1)//true 对象与Number、Boolean、String比较的时候,会调用ValueOf方法,没有就调用toString方法,[1]的valueOf方法返回1,所以为true。但是alert([1,2].valueOf())会得到1,2

 

alert(!{} == {} )//false 左边:要进行boolean运算要先将对象转化为boolean类型的值,对象不再六中情况之内为true,在进行非运算得到false。右边得到字符串。两边在转化为Number类型,这是左边是0,右边是NaN

 

alert(![]==[])//true 左边[]转化为Boolean得到true,非一下为false。右边得到空字符转。两边在转化为Number的0=0

 

alert(null==null)

 

alert(null==undefined)//这两种是想等的,null与其他类型的比较是不等的

===是强等,要求数据类型和类型都相同

 

规则总结

==  弱等  隐式转换 

Boolean String Number三种数据之间比较

X==y (x,y 数据类型一样 ,比较值)

X和y不一样

X和y 隐式转换为number再做比较

true==”true”//false

NaN==NaN//false  NaN和自己都不相等

Null,undefined  和其他比较不等

X==y 比较的时候如果其中出现了一个object

Obj 有valueof直接调用得到值后比较 没有调用toString();

比较规则回到前面

{}=={}

[]==[]

!{}=={}//false

 

![]==[]//true

 

七、js中的控制语句

switch语句

 

switch (expression){
       case const1:
		语句块1;
                 break;   
	case  const1:
		语句块2
	…… 
	default:
		语句块N
}
 if语句

 

 

if(t==123){
		alert("相等")
}
				
if(t===123){				
	alert("gaga")
}
 for循环(while与java一样不再写了)

 

var t=[1,2,3,new Date(),{},"test"];
			
for(var i=0;i<t.length;i++){
	alert(t[i]);
}
for(var t1 in t){
	alert(t[t1]);
}

 

 八、数组

1、数组长度随时可变!随时可以修改!我们可以通过修改数组的长度清空数组。 

2、Array.length获得数组长度

3、

var arr01=[1,2];
alert(arr01.join("-*-")) 得到1-*-2

 4、

 

arr01.unshift("test"); //从最前面插入数组
alert(arr01.shift())//获取数组最前面的元素

 5、

 

arr01.push("test")//将元素添加到数组最后的位置
alert(arr01.pop())//获取数组最后的元素

 

 

 九、js函数

1、函数传递声明及传递参数问题(D:\TecSty\笔记\JS\testjs02day\testfunc.html)

//方法1
var t = function(b1,b2){		
	alert(b1+"-"+b2)
}
//方法2
function test2(t){
    alert('blabla');
}
t(123,123,123);//调用的时候传递多少参数都没有关系,形参的个数只是说明了函数想接受的参数的个数,另外js函数的参数实际存储在arguments数组里面

 2、js中函数也是一个对象(D:\TecSty\笔记\JS\testjs02day\testfunc.html)

function test2(t){
	t();
}
var t2 = function(){alert("test")};
test2(t2);

 3、js执行顺序问题(D:\TecSty\笔记\JS\testjs02day\testfunc02.html)

var add=function(a){

	alert(a+100);	
	
}
预加载
function add(a,b,c){
	
	alert(a+b+c)
}
function add(a,b){
	
	alert(a+b);
}
add(123,123,123);//无论var add=function(a)放在哪个位置,都会调用这个函数,因为以下面的当时声明的函数会进行预加载,在正式执行的时候,add这个变量还是会指向以第一中方式定义的函数。从这里还可以看出js没有函数从在的概念

ps:关于预加载的一个题目

 

<script type="text/javascript">
            function f(){
                return 1;
            } 	
            alert(f());
            var f = new Function("return 2;");  
            alert(f());
            var f = function(){
                return 3;
            } 
            alert(f());
            function f(){
                return 4;
            }  
            alert(f());
            var f = new Function("return 5");
            alert(f());
            var f = function(){
                return 6;
            } 
            alert(f());
        </script>
//答案是 4 2 3 3 5 6

 

 4、模拟函数重载

function add(){
	var l1 = arguments.length;
	if(l1==2){
		return arguments[0]+arguments[1]
		
	}else if(l1==3){
		
		return arguments[0]+arguments[1]+arguments[2];
		
	}else{
		
		alert("参数个数不对")
	}
	
}

//这样add函数可以处理各种参数列表的函数

 5、函数定义的本质

var  f1 = new Function("x1","x2","alert(x1+x2)");
//这就是f1函数定义的本质,前两个是参数,后面的是函数体

 6.使用变量指向对象的方法

var  f1 = new Function("x1","x2","alert(x1+x2)");
var a = new function(){}
//方法3
function getChildElements(faid){}
var a = getChildElements;
a('picContainer');

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值