JS基本语法
JS的组成
JS的引入
1.行内式
2.内嵌式
3.外部文件
输入输出语句
变量
变量的声明与赋值
简单数据类型
1.Number
2.Boolean
3.String
4.Undefined
5.Null
获取变量的数据类型
数据类型转换
运算符
流程控制的结构
全局变量与局部变量
对象
作用域链
预解析与运行
JS的组成
JS由三部分组成: 1.ECMAScript:JS的核心语法部分。简单来说就是代码该怎么写,全由ECMAScript决定。 2.DOM:文档对象模型。简单来说就是以document为对象。 3.BOM:浏览器对象模型。简单来说就是以window为对象。JS的引入
行内式
把js写在你要用的标签里面 比如:<button type="button" onclick="这里"></button>
内嵌式
直接把js写到html文件中,可以写在head里也可以写在body后面, ```javascript ```外部文件引入
将js写在一个外部文件中,用link标签进行连接,就像css的外部文件一样 <link rel="stylesheet" href="这里是链接">
输入输出语句
JS共有四种方式来显示数据使用 window.alert() 写入警告框
使用 document.write() 写入 HTML 输出
使用 innerHTML 写入 HTML 元素
使用 console.log() 写入浏览器控制台
警示框的使用方法,在你打开网页后会有弹窗出现
<script>
window.alert(5 + 6);
</script>
write,在你点击了按钮后就会出向相应的结果,你如
<button onclick="document.write(5 + 6)"></button>
inner,在网页中会显示出结果
<script>
document.getElementById("demo").innerHTML = 5 + 6;
</script>
输出在控制台,用F12可以进行查看
<script>
console.log(内容);
</script>
变量
变量,顾名思义,就是用来存储数值的容器变量的声明与赋值
变量的声明代码如下var a;
变量的赋值如下
a=1;
当然,声明和赋值可以写在一块,如
var a=1;
在js中,变量的数据尅行是根据其赋的值决定的
而在前面的例子中的a就是标识符了
名称可包含字母、数字、下划线和美元符号
名称必须以字母开头
名称也可以 $ 和 _ 开头(但是在本教程中我们不会这么做)
名称对大小写敏感(y 和 Y 是不同的变量)
保留字(比如 JavaScript 的关键词)无法用作变量名称
提示:JavaScript 标识符对大小写敏感。
简单数据类型
简单数据类型包括数字,布尔型,字符串,undefined与NullNumber
数字型包裹整数与浮点型,默认为0 ```javascript var num = 0; //八进制前面加0,十六进制前面加0x //isNaN()用来判断一个变量是否为非数字类型 ```Boolean
布尔型包括true和false,默认值为false,其中true为1,false为0var a = true;//a为1
String
字符串型,默认为空,复制时需要引号var a="字符串";//字符串
var a="10";//10
var a="10"+10;//1010
Undefined
Undefined,出现的原因是声明了变量确未赋值var x;
console.log(x);//undefined
Null
Null,声明了变量为空值,它的默认值即为nullvar a = null;
获取变量的数据类型
可使用 typeof 来确定变量的类型:typeof 运算符返回变量或表达式的类型:
typeof "" // 返回 "string"
typeof 0 // 返回 "num"
等等
数据类型转换
1.字符串型
准换成字符型共有三种方法
var a = 1;alert(a.toString());
var a = 1;alert(String(a));
var a = 1;alert(a + "");//隐式转换
我比较喜欢用第三种,因为方便
2.数字型
var a = parseFloat("0102"); //102
var a = parseFloat("red"); //NaN
var a = parseInt("AF", 16); //175
var a = '12'-0;//12隐式转换
我仍比较喜欢第四种隐式转换,徐璈注意的是,parseFloat只能转换10进制
其中,数字,布尔,字符串可以进行强制转换
Boolean(value) - 把给定的值转换成 Boolean 型;
Number(value) - 把给定的值转换成数字(可以是整数或浮点数);
String(value) - 把给定的值转换成字符串;
运算符
流程控制的结构
与C类似,都分为顺序结构,分支结构和循环结构这三种结构全局变量与局部变量
与C类似在全局作用域下声明的变量叫做全局变量,它有如下特点:
1.全局变量的代码在任何位置都可以使用
2.在全局作用域下var声明的变量是全局变量
3.特殊情况下,在函数内不使用var声明的变量也是全局变量
在局部作用域下声明的变量叫做局部变量,它有如下特点:
1.局部变量只能在该函数内部使用
2.在函数内部var声明的变量是局部变量
3.函数的形参实际上就是局部变量
二者的区别:
全局变量:在任何一个地方都可以使用,只有在浏览器关闭时才会被销毁,因此比较占内存
局部变量:只在函数内部使用,当其所在的代码块被执行时,会被初始化;当代码块运行结束后,就会被销毁,因此更节省内存空间。
对象
保存一个值时,可以使用变量,保存多个值时,可以使用数组。如果要保存很多很多值,我们往往使用对象。
对象也是变量,js里几乎“所有事物”都是对象。
var obj = {
name:"qian",
toStr:function(value){
alert("这里是 "+value);
}
};
上式是对象的一种创建方式
关于对象的具体用法,请看这里
作用域链
作用域链:内部函数访问外部函数的变量,采取的是链式查找的方法来决定取哪个值,这种结构我们称为作用域链,实行就近原则。 例:var num = 10;
function fn(){
var num = 20;
function fun(){
console.log(num);
}
fun();
}
fn();
最终结果为20
预解析与运行
js引擎运行js分为两步:预解析 代码执行
1)预解析 js引擎会把js里面所有的var还有function提升到当前作用域的最前面
2)代码执行 按照代码书写的顺序从上往下执行
预解析分为变量预解析(变量提升)和函数预解析(函数提升)
1)变量提升 就是把所有的变量声明提升到当前作用域最前面 不提升赋值语句
2)函数提升 就是把所有的函数声明提升到当前作用域的最前面 不调用函数