javascript是松散的语言 (测试浏览器IE8/火狐20.0.1)
1.声明时javascript的代码摆放
<script type="text/javascript">
代码...
</script>
<script src="" type="text=javascript" />
轻量级的代码大都可以直接放在head标签里面,当脚本库庞大时,加载页面会出现加载过慢,显示失败的情况,可以把代码放在页面的尾处(维护性不好),带确保一致性时,要不都放head,要不都放底部.有时候也可以设置defer属性,表示脚本不会产生任何文档内容,于是浏览器可以处理剩余部分,在页面处理结束时才处理脚本部分。在添加defer属性的标签内,最好不要添加代码,直接引用外部js文件即可,不然会有不好的事情发生。我在IE8里面遇到过。
2.定义的函数使用function关键字
在javascript中,javascript函数也是对象,所以可以使用名字或者直接将函数赋值给一个变量或另外一个对象的属性。
3.事件句柄
4.document对象
document对象代表整个页面,可以访问页面中的所有元素
open方法,打开需要修改的页面
close方法,关闭页面,并强制浏览器刷新页面内容,示例:1.html
5.window对象
6.属性操作符号
应用方法链
7.var关键字和作用域
如果使用var变量,那么该变量就是一个局部变量,只能在定义的变量函数的范围内使用
8.代码的隐藏
出于浏览器的问题,有时候脚本代码会直接输出到页面上,所以对代码要做隐藏,推荐使用
<script type="text/javascript">
//<![CDATA[
代码...
//]]>
</script>
9.关于noscript
在不启用javascript时使用
<noscript>该标签时在javascript不启用时显示</noscript>
10.字符串编码
window对象
加码
encodeURI//对字符选择性转义编码
encodeURIComponent//对字符全部转义编码
解码
decodeURI
decodeURIComponent
只对ASCII码进行编码
一般用于URL路由的编码问题
示例2.html
11.字符串转换/操作
字符串操作是最经常处理的操作
doument.write("3"+2);//字符串和数字相加是字符串 document.write("<br />"); document.write("第一个字符串:\"3\"+2+1"); document.write("<br />"); document.write("3"+2+1); document.write("<br />"); document.write("第二个字符串:3+2+\"1\""); document.write("<br />") document.write(3+2+"1"); document.write("<br />"); document.write("第三个字符串:3+2+\"1\"+4+5"); document.write("<br />"); document.write(3+2+"1"+4+5); document.write("<br />");
实验上面代码
发现:在进行字符串代码转换的时候会发现,当字符串和数字进行结合,会出现先执行的结果,如"3"+2+1,执行过程是,第一步:"3"+2,第二步:"32"+1,第三步:输出"321",而3+2+"1",执行过程是,第一步:3+2,第二步:5+"1",第三步:输出"51"
最后:3+2+"1"+4+5,执行过程,第一步:3+2,第二步:5+"1",第三步:"51"+4,第四步:"514"+5,第五步:输出"5145"
结果:
第一个字符串:"3"+2+1
321
第二个字符串:3+2+"1"
51
第三个字符串:3+2+"1"+4+5
5145
其他运算符使用时(扩展补充)
document.write("第四个字符串:\"33\"-\"3\""); document.write("<br />"); var str_str04="33"-"3";//var str_str04="33"-3;相同的结果 document.write(str_str04); document.write("<br />"); document.write("第五个字符串:\"33\"/3"); document.write("<br />"); var str_str05="33"/3; document.write(str_str05); document.write("<br />"); document.write("第六个字符串:\"33\"*3"); document.write("<br />"); var str_str06="33"*3; document.write(str_str06); document.write("<br />"); document.write("第七个字符串:(\"3\"+\"2\")*\"5\""); document.write("<br />"); var str_str07=("3"+"2")*"5"; document.write(str_str07); document.write("<br />"); document.write("第八个字符串:(\"3\"+\"2\")*5"); document.write("<br />"); var str_str08=("3"+"2")*5; document.write(str_str08); document.write("<br />"); document.write("第九个字符串:(3+2+\"3\"+\"2\")*5"); document.write("<br />"); var str_str09=(3+2+"3"+"2")*5; document.write(str_str09); document.write("<br />");
*和/是处理数值类型的,所以会在处理时把字符串转换成数值
输出对象是,字符串为"[object "+className+"]"
var str_str10=34.56; var str_str11=true;//Boolean值 var str_str12=null;//为空,不存在,null在一定意义上也是值 var str_str13;//未定义,为初始化 document.write(str_str10); document.write("<br />"); document.write(str_str11); document.write("<br />"); document.write(str_str12); document.write("<br />"); document.write(str_str13); document.write("<br />"); document.write(document);
Boolean类型用法
出了true和false,在判断1和0是也会隐式表示成Boolean类型
var bool_val01="1"; var bool_val02="0"; document.write("boolean类型:bool_val01=\"1\";"); document.write("<br />"); document.write("boolean类型:bool_val02=\"0\";"); document.write("<br />"); document.write("boolean类型01:!!bool_val01"); document.write("<br />"); document.write(!!bool_val01); document.write("<br />"); document.write("boolean类型02:!bool_val01"); document.write("<br />"); document.write(!bool_val01); document.write("<br />"); document.write("boolean类型03:!bool_val02"); document.write("<br />"); document.write(!bool_val02); document.write("<br />"); document.write("boolean类型04:!!bool_val02"); document.write("<br />"); document.write(!!bool_val02);