基本语法
js变量命名
1:规定:只能由字母,数字,下划线和$组成,但首字母不能是数字;
2:变量名区分大小写;
js注释
单行注释格式: // (注释//后面要加空格才不会报错);
多行注释格式: /* ...... */;
定义变量
var 变量名;
eg:var num =1;
输出语句
console.log();
浏览器的控制台使用
1:打开网页,右击,审查元素
2:在console控制台可以写js代码
3:console.log(score):在控制台打印变量
js变量类型
基本类型
数值类型
字符串类型
布尔值类型
null
undefined
js不区分小数和整数
null在内存中有地址
undefined在内存中不存在
衍生类型
数组类型
对象类型
函数类型
衍生类型都是引用传值
// 数组元素里面可以任意定义类型,不受限制
1:数组定义 var arr = [1,2,3,4,'hello',null,true];
//对象定义的最后一个属性不需要添加,
2:对象定义
eg:var person = {
name:"zhanqgi",
age:3,
tags:['js','java','web'...]
}
严格检查模式
‘ues strict’; //严格检查模式,防止js的随意性导致产生的一些问题(写在js的第一行)
局部变量建议用 let定义;
js的引入
1:html文件内部插入:<script type="text/javascript">
......
</script>
2:外部文件引入的方式:<script type="text/javascript" src="xx.js"></script>
3:引入多个js文件
就是插入多个<script></srcipt>文件,运行从上到下,依次执行;
4:注意一种错误写法:
<script type="text/javascript" src="xx.js">
var _name='张三';
alter(_name);
</script>
5:<script>标签可以写在head和body区
有时候script代码写在head区出现一些意外,
比如在head的srcipt代码试图去访问body中
的DOM对象,就会提示找不到。
js运算符
1:算术运算符 +,-,*,/,%(求余)【其中浮点数求余可以是浮点数】
2:条件运算符 >,<.>=,<=,==,!=,==(等于:类型不一样,值一样,也会判断为true),===(绝对等于,值相等,类型也相等),!==
3:自增自减 ++,--
4:逻辑运算符 ||(或),&&(与)
返回值不是布尔类型,是一个具体的值
规律:
||:
当都为真时,以左边值为准;
当有一方为假,以真的为一方为准;
&&:
以右边为准;
5:赋值运算符 =
6:三元远算符 ?:
流程控制
顺序语句
分支语句
循环语句
分支语句
1:单路分支
if(表达式){
代码段,可以是一句,也可以是多句;
}
2:双路分支
if(表达式){
代码段1;
}
else{
代码段2;
}
3:多路分支
if(表达式1){
代码段1;
}
else if(表达式2){
代码段2;
}
......
else{
代码段n;
}
4:switch分支
switch(表达式){
case 值1:代码段1;break;
case 值2:代码段2;break;
......
case 值n:代码段n;break;
default:代码段n+1;
}
循环语句
1:while语句
while(exp){
代码段;
}
2:do...while循环语句
do{
代码段;
}
while(exp);
不管是否满足条件都先执行一次代码段
3:for循环语句
for(exp1;exp2;exp3)
{
语句体;
}
函数
1:程序中得函数是指一段封装得代码段,能够完成特定功能;
2:格式
function 函数名([arg1][arg2]...[argn])
{
代码段;
[return 返回值;]
}
//JavaScript引擎有一个在行末自动添加分号的机制
3:函数的用法:被调用的函数必须在页面内有声明过程;
4:函数可以有0-n个参数,函数可以没有返回值,也可以有一个返回值,但不能有多个返回值;
5:js中函数可以当成变量;
js函数
1:js函数和java函数很相像,有局部变量和全局变量,
其中全局变量中定义的变量默认绑定window对象;
2:由于所有的全局变量都会绑定在window上,如果不同的js文件,使用了相同的全局变量,为了减少冲突,可以自定义一个全局变量
eg:
//唯一全局变量
var app = {};
app.name = 'weixin';
app.add = function(a,b){
return a+b;
}
//降低全局命名的冲突
3:局部作用域let
建议使用let去定义局部作用域的变量
function a(){
//for(var i=0;i<10;i++)
//let解决了局部作用域冲突问题
for(let i=0;i<10;i++){
console.log(i);
}
console.log(i+1);
}
4:常量 const
const PI = '3.14';
5:apply
js可以控制this的指向
函数名.apply(指向的对象,[]//参数);