一.JavaScript三种存在位置
1.行间式:存在于行间事件中
<body id="body" onload="body.style.backgroundColor='#0ff'">
</body>
2.内联式:存在于页面script标签中
<body id="body">
<script type="text/javascript">
body.style.backgroundColor='#0ff'
</script>
</body>
3.外联式:存在于外部JS文件,通过script标签src属性链接
index.js文件
body.style.backgroundColor='#0ff'
index.html文件
<script src="./js/index.js"></script>
二.解释性语言特性决定JS代码位置
1.出现在head标签底部:依赖型JS库
2.出现在body标签底部:功能型JS脚本
三.JS语法规范
1.注释
// 单行注释
/*
多行注释
*/
2.以分号作为语句结尾(允许省略)
四.变量的定义
1.ES5定义变量
var num = 10; // 无块级作用域变量
num = 10; // 全局变量
2.ES6定义变量
let num = 10; // 局部变量
const NUM = 10; // 常量
3.四种 定义变量的方式
四种定义变量的方式
语法: 关键词 变量名 = 变量值
num = 10; // 省略关键词, 定义的为全局变量, 在任何位置定义, 在任何位置都可以访问, 但不建议使用
var num = 10; // var关键词, 无块级作用域, 定义在块级作用域中的变量, 外界也可以访问
let num = 20; // let关键词, 有块级作用域, 定义在块级作用域中的变量, 外界无法访问
const NUM = 30; // const关键词,有块级作用域, 定义在块级作用域中的变量, 外界无法访问, 且变量的值不能再被二次修改, 所以为常量
/* 产生块级作用域的方式
{
直接书写
}
if语句可以产生
while语句可以产生
for语句也可以产生
*/
// 函数可以产生局部作用域, 除了定义在局部作用域中的全局变量(没有关键字的变量声明), 外界可以访问, 其他定义方式, 外界都不可以访问
五.变量(标识符)的命名规范
1.由字母,数字,_,$组成,不能以数字开头(可以包含中文字符)
2.区分大小写
3.不能出现关键字及保留字
注意:
<script>
//块级作用域定义变量
// var无块级作用域
{
const NUM="hello";
var num=10;
}
//let有块级作用域
{
let b=888;
console.log(b)
}
//const有块级作用域
{
const NUM="hello";
}
console.log(num);
//let定义的变量具有块级作用域,在块级作用域之外无法访问
//var定义的变量无块级作用域,在块级作用域之外可以访问
// const定义的常量具有块级作用域,在块级作用域之外无法访问
// 在ES6语法下,定义的变量(let)和常量(const)都具有块级作用域
// 在ES5语法下,没有定义常量的概念,且所有的定义变量都不具有块级作用域
</script>
<script>
//局部作用域
//ES5语法下,只有方法(函数)才能产生局部作用域
//ES6语法下,块级作用域都可以为局部作用域
//块级作用域的范围大于等于局部作用域的范围
function func() {
a =10; //全局作用域
let b=20; //局部作用域
const c=20; //局部作用域
//定义全局变量
//注:定义全局变量与重新赋值语法相同,容易混淆,不建议使用
ddd=50;
}
{
ddd=60;
}
func() //执行函数
console.log(a);
//console.log(c);
console.log(ddd); //50
</script>
let关键字可以声明变量,同var一样,var只要不在函数里面,都为全局变量,
但是let关键字声明的变量,会在结构语句中产生块状作用域。
所有结构语句 for while do while if switch 都有块状作用域.