Javascript基础

1、JavaScript的组成:
核心的JavaScript由以下3部分组成:
	ECMAScript(基本语法)
		语法、类型、关键字、保留字、语句、运算符、对象
	Dom文档对象模型(封装好的一些函数库)
		在html于xml中都是用dom
		Xml与html的应用程序接口(api)
	Bom浏览器对象模型
		XMLHttpRequest、ActiveXObject对象等。浏览器特有的。
2、<script>块中的代码有语法错误,则整个该script块中的代码都不执行了,但是不会影响其他的script块。
当使用导入外部js文件时,由于js得加载时“阻塞”模式,所以需要等到js全部加载完成以后才会继续向后执行,所以如果对于性能要求比较高的时候可以考虑把js加载放到页面的最后。
放到<head>中的<script>在body加载之前就已经运行了。写在body中的<script>是随着页面的加载而一个个执行的。
每条语句后用 “;” 来结尾(不是必须,但建议加上)。虽然语句结尾处不加“分号”也可以,是因为浏览器具有"自动插入分号"的机制(即用户不写分号,浏览器也会在执行时自动加上“分号”),但建议还是在语句结尾处加“分号”。原因有2:一、可以放心的做js压缩(压缩多余空白)
3、JavaScript共六种数据类型:
	Boolean(布尔),取值:只有两种值:true或false
	Number(数字),取值:所有数字, 包含整数小数等,范围相当于double。
	String(字符串),取值:所有字符串。(String对象按引用比较,如果一个或者两者都是字符串值的话,按值比较)
	Undefined(未定义),取值:只有一个值undefined
	Null(空对象),取值:只有一个值null
	Object(对象类型),取值:任何对象、Array、function等等
	以上6种数据类型,除Object外其他都是基本类型,Object是引用类型
4、typeof运算符,该运算符返回一个表达式的数据类型的字符串表示形式
5、完全相等运算符(===)
	===运算符判断前不进行类型转换,并且===两边必须类型相同,值也相同的情况下才返回true
	switch语句使用的是完全相等运算符
6、null与undefined
	undefined类型只有一个值,即undefined。当声明的变量还未被初始化时,变量的默认值为undefined。
	null类型也只有一个值,即null。null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。
	var oValue;  alert(oValue == undefined); //output true  
	document.getElementById('notExistElement')); //output null
	undefined值,undefined表示一种位置的状态:
	a.声明变量但未赋值时,变量的值为undefined
	b.方法没有return语句返回值时,返回undefined
	c.未声明的变量,通过typeof()检测变量时,返回"undefined"字符串。
	d.访问不存在的属性时返回undefined,例如:window.xxx返回undefined。
	null值:
	null表示一个有意义的值,表示“无值”或“无对象”,此时变量的状态为“已知状态”,即null。可以通过设置对象名为null值,来释放对对象的引用,以便浏览器的垃圾回收机制可以回收内存。
	注意1:通过==判断null与undefined结果为true,但含义不同,而通过===判断null与undefined则返回false.
	注意2:把null转换为数字,结果为0。而把undefined转换为数字结果为NaN。
7、JavaScript中变量作用域问题
	a、在页面上直接声明的变量即为“全局变量”,此处的全局变量意思是说在整个当前页面中都能访问的变量。
	“全局变量”默认都是属于window对象的成员。
	“全局变量”直到页面关闭或浏览器关闭才释放资源。
	全局变量在页面的每个<script>标签中都能访问。
	全局变量容易引起“命名冲突”
	b、在函数内部声明的变量作用与范围为当前函数内部。
	c、js中没有块级作用域范围。(在函数内部的for或者while或者if等块中声明的变量,的作用域范围也是整个函数之内)
	d、声明变量时可以使用var,也可以不用var。不用var表示声明的是“全局变量”。
8、JavaScript中的字符串转义符
	不能用@,只能用'/'
9、数据类型转换
	a、字符串 转换 数字:
	parseInt(numString[, radix]),字符串转换整数
	parseFloat(numString),字符串转换小数
	b、任意类型到指定类型的转换:
	将任意类型转换为数字:
	Number(object);
	任意类型转换为字符串:
	1.String(object)
	2.对象.toString();
	任意类型转换为Boolean:
	Boolean(object)
	c、NaN(Not a Number):当将某类型转换为数字失败时,返回NaN。
	表示不是一个数字。NaN不等于任何值,包括它自己,需要使用isNaN(arg)函数。(NaN==NaN返回false)
10、eval()方法
        将一段字符串的js代码,计算并执行(当需要使用eval()时,建议用new Function()来代替eval(),因为eval()会将变量代码中的变量的作用域提升为“全局变量”,而new Function();中代码的作用域仅在当前函数中)
        eval('var a=12,b=13;alert(a+b);');
        alert(b);//可以访问
        var f = new Function('x,y', 'var sum=x+y;alert(sum)');
        f(12,13);
        alert(x);  //未定义
11、&&和||:
	&&:返回最后一个为true的元素
	||:返回第一个为true的元素
12、js函数不能重载:arguments对象
13、函数定义与变量声明的“预解析”功能
	结论1:在页面中的所有函数定义语句,都会在代码执行前进行“预解析”,在“预解析”的时候,对于重名的函数就会用最后一次定义覆盖所有前面的定义。
	结论2:对于在函数内部定义的局部变量,无论是定义在函数的任何位置,在函数执行前也会进行“预解析”,会把变量声明语句“置顶”解析。也就是说无论变量声明语句在函数的任何地方,都会被认为是写在了函数一开始的部分,所以后面的语句都可以直接使用这些变量了。但注意:这里只会把变量声明的语句“预解析”,赋值语句并不会一同被“解析”。
    <script type="text/javascript">
        var x = 1, y = 0, z = 0;
        function add(n) { n = n + 1; return n }
        y = add(x);
        function add(n) { n = n + 3; return n; }
        z = add(x);
        alert(y + '......' + z); //4....4
    </script>
    <script type="text/javascript">
        var user_name = 'steve';
        function f1() {
            alert(user_name);//undefined,这里不认为user_name使用的是全局变量user_name,而是使用的局部变量user_name,但因为“预解析”时,没有赋值语句只有声明语句所以是undefined。
            var user_name = 'yzk';
            alert(user_name);//yzk
        }
        f1();
    </script>
14、JavaScript中的匿名函数1、减少函数命名问题,2、减少文件的字节数,3、在开源js库中都大量使用到了匿名函数)
	第一种写法:
	var fn = function (x, y) { return x + y; };(不要忘记分号)
	调用:alert(fn(10,20));  应用之一:设置事件处理程序。
	
	第二种写法:
	var result = (function (x, y) { return x + y; })(10, 20);
	alert(result);
	这种写法表示定义了一个匿名函数,立即调用。
	
	第三种写法(动态函数):
	var fn = new Function("x", "y", "z", "var sum=x+y+z;alert(sum);");
	或:var fn = new Function("x,y,z", "var sum=x+y+z;alert(sum);");
	调用:fn(10, 20, 30); 
	
	var x = 1, y = 0, z = 0;
	var add = function (n) { n = n + 1; return n; };
	y = add(x);
	add = function (n) { n = n + 3; return n; };
	z = add(x);
	alert(y + '......' + z); //2....4(此处为函数表达式的赋值语句,并没有定义命名函数,赋值语句只会一条一条按顺序执行,没有“预解析”功能。
)
15、Array对象(toString,join,reverse,contact,sort,push,pop,shift,unshift,slice,splice)
	JavaScript数组是一个集数组、ArrayList集合、Hashtable集合、栈集合、队列集合等的一个“超强综合体”。
	new Array(); //声明数组没有初始化长度
	new Array(size); //声明数组初始化长度为size。
	new Array(item0,item1, ..., itemN);//声明数组并设置初始元素。
	var arr = [‘China’, 2008, true, ‘Hello’];//(【数组字面量】,推荐写法
	var arrayDict = { "kb": "科比", "qd": "乔丹", "jnt": "加内特" };
	for (var key in arrayDict) {
		alert(key + '......' + arrayDict[key]);
	}
16、String对象(length,charAt,indexOf,substr,substring,toUpperCase,split,match,replace,search)
17、Date、Math对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值