1. <script></script>元素应该放在<body>元素内。因为如果在<head>元素内,那么所有的Js代码都要被下载、解析、执行完成后才可以呈现页面的内容。即浏览器遇到<body>标签。这样会导致在呈现页面时出现延迟。所有的<script>元素都会按照他们在页面中出现的先后顺序执行。
2. 延迟脚本:<script>的defer属性,只适用于外部脚本执行。表明脚本会被延迟到整个页面都解析完毕之后再执行-----即立即下载,但延迟到浏览器遇到</html>标签后再执行。且第一个延迟脚本一定会在第二个延迟脚本之前执行。Html5会忽略defer属性。
3.异步脚本:<script>的async属性,只适用于外部脚本的执行。表明脚本会被延迟到整个页面都解析完毕之后再执行-----即立即下载,但延迟到浏览器遇到</html>标签后再执行。。但是脚本并不保证按照他们的指定先后顺序执行。
4.XHTML:可扩展标记语言(Extensible HyperText Markup Language)代码规则比HTML严格。比如<号被看成是标签。解决办法是:
<script type="text/javascript">
//<![CDATA[ 使用注释是因为有的浏览器不兼容XHTML----即不支持CData片段
if(a < b){
alert("A is less than B");
}
//]]>
</script>
4. <noscript>元素
<noscript>
<p>本页面需要浏览器支持(启用)Javascript。</p>
</noscript>
以上的内容只有在浏览器不支持脚本或者浏览器支持脚本,但脚本被禁用时显示。
5. ECMAScript中的一切(变量、函数和操作符)都区分大小写 驼峰规则
6. 标识符:指变量、属性、函数的名字,或者函数的参数。规则如下:
第一个字符必须是一个字母、下划线(-)或$;
其他字符可以是字母、下划线、美元符号或数字。
7. 严格模式:"user strict"
8. ECMAScript的变量是松散类型的即可以用来保存任何类型的数据。
var message = "rourou";
message = 100; //修改变量值的同时修改值的类型。
9. 局部变量和全局变量
var操作符定义的变量(函数中)为定义该变量的作用域中的局部变量。
省略var操作符定义的变量为全局变量。
可以使用一条语句定义多个变量,如下:
var message = "rourou",
found = true,
age = 22;