1.js基础
- 注释
单行注释:在注释文字前加//
/*
多行注释1
多行注释2
*/
- 标识符
由字母、数字、下划线和不轻易使用,在JQ有特殊的意义)
- 关键字
for、if、var、while、func,true、false等 - 数据类型
1)类型
类型名首字母都是大写的
Number(数字)、String(字符串)、Boolean(布尔)、Array(数组)、Object(对象)
a.Number -- 包含所有的数字(包含整数和小数),例如:100、0.32、-34、2e5
b.String -- 用双引号或者单引号引起来的字符集,支持转义字符和编码字符
c.Boolean -- 只有true和false两个值,分别代表真和假
d.Array -- 相当于python中的列表,用中括号括起来的多个元素。[12, 'abc', true, [1, 2]]
e.Object -- 类似python中字典和对象的结合
2)typeof函数
typeof(数据) -- 获取数据对应的类型
3)类型名(数据) -- 类型转换
parseFloat(数据) -- 将数据转换成浮点数
parseInt(数据) -- 将数据转换成整数 - 语句
一行一般情况下只写一条语句,语句结束后可以有分号也可以没有;如果一行有多条语句,语句之间必须有分号
缩进无要求
大小写敏感
2.变量
- 声明变量的语法
1)语法1:
变量 = 值
2)语法2:
var 变量名 / var 变量名 = 值
3)说明:
变量名 -- 标识符、不能是关键字;采用驼峰式命名
声明变量如果没有给变量赋值(语法2才支持),变量的默认值是underfined
3.运算符
js支持数学运算符、比较运算符、逻辑运算符、赋值运算符、(位运算)
- 数学运算符:+,-,,/,%,++,--
+,-,,/,%和python一样
自加1运算:变量++,++变量
2)自减1运算:
变量--,--变量
3)自加自减的坑 - 比较运算符:>,<,==,!=,<=,>=,===,!==
比较大小和python一样
==:判断值是否相等(不管类型)
===:同时判断值和类型是否相等(python中的==)
支持表示范围的连续写法 - 逻辑运算符:&&(逻辑与运算),||(逻辑或运算)、!(逻辑非运算)
和python中的and,or,not功能一样
4.赋值运算符:=,+=,-=,*=,/=,%=
和python一样
5.复合运算和python一样
6.三目运算符 - 表达式?值1:值2
判断表达式的值是否为true,如果为true整个运算的结果是值1,否则是值2
4.分支结构
js有if和switch两种分支结构
- if分支
1)结构1
if(条件语句){
满足条件执行的代码块
}
python写法:
if 条件语句:
满足条件执行的代码块
2)结构2: if else
js写法:
if(条件语句){
满足条件执行的代码块
}else{
不满足条件执行的代码块
}
3)结构3:if-elif...else
js写法:
if(条件语句){
满足条件1执行的代码块
}else if(条件语句){
满足条件2执行的代码块
}
...
else{
不满足条件执行的代码块
}
- switch
1)语法:
switch(表达式){
case 值1:
代码块1
case 值2:
代码块2
case 值3:
代码块3
...
default:
代码块N
}
2)执行过程
先计算表达式的结果,然后让这个结果按顺序从前往后和每个case后面的值进行比较,
如果哪个case后面的值和表达式的结果相等,就将这个case作为入口,
依次后面每个case对应的代码块,
直到执行完最后一个代码块或者遇到break为止如果每个case后面的值都和表达式的结果不相等,
直接执行default后面的代码块(default可以不写)
5.循环结构
js中循环分为for循环和while循环
- for循环
1)or-in循环
for(变量 in 序列){
循环体
}
让变量依次获取序列中元素的下标(下标/属性名),一个一个取,取完为止,每取一个执行一次循环
2)c中的for循环
for(表达式1;表达式2;表达式3){
循环体
}
执行过程:先执行表达式1,再判断表达式2的值是否为true;如果为true执行循环体,执行完循环体再执行表达式3;
再判断表达式2是否为true,如果为true执行循环体,执行完循环体再执行表达式3;
再判断表达式2是否为true,如果为true执行循环体,执行完循环体再执行表达式3;
以此类推,直到表达式2的结果为false,循环结束
- while循环
1)while循环
while(条件语句){
循环体
}
2)do-while
do{
循环体
}while(条件语句)
执行过程:执行循环体,判断条件语句是否为true,为true再执行循环体
执行完循环体又判断条件语句是否为true
以此类推,直到条件语句为false循环结束
6.函数
- 语法
function 函数名(参数列表){
函数体
}
- 匿名函数
function(参数列表){
函数体
}
<script type="text/javascript">
//2.匿名函数
func1 = function(x, y){
console.log(x, y, x + y)
return x+y
}
func1(10,20)
a = function(x, y){
console.log(x, y, x + y)
return x+y
}(1,2)
console.log(a)
</script>
7.字符串
<script type="text/javascript">
//1.字符串
//单引号或者双引号引起来的字符集,支持转义字符和编码字符
str1 = "hello js"
str2 = 'hello\t\'word\''
console.log(str1,str2)
//2.获取字符
//字符串[下标]
//注意:1)下标只有正值,没有负的 2)下标越界不会报错,获取到的值是undefined
console.log(str1[0])
//js中不支持[]对应的切片语法,但是有相应的方法
//3.相关操作
//1)加法运算
//支持字符串和任何数据相加,如果另外一个数据不是字符串就先转换成字符串再进行拼接操作
console.log('abc' + 'hello')
console.log('abc' + 123)
//2)比较运算:和python一样
//3)字符串长度:字符串。length
console.log(str2.length)
//4.相关方法
str2 = new String('hello')
console.log(str2)
//1)字符串.charCodeAt(下标)
console.log(str2.charCodeAt(0))
//2)字符串.match(正则表达式)
re = /\d{3}[a-z]{3}/
console.log('234abc---'.match(re))
//3)字符串.slice()
console.log(str2.slice(0,3))
'abc123'.sort(key)
</script>
8.数组
<script type="text/javascript">
//js中的数组相当于python中的列表
//1.查
arr1 = [10, 2, 30, 5, 32, 4]
//1)获取单个元素:数组[下标]
console.log(arr1[3]) //5
console.log(arr1[10]) // undefined
//2)遍历
for(index in arr1){
console.log('index:'+index, arr1[index])
}
//2.增
console.log('===============添加===================')
//1)数组.push(元素) - 在数组的最后添加元素
arr1.push(100)
console.log(arr1)
//2)数组.splice(下标,0,元素) - 在指定的下标前插入指定的元素
//数组.splice(下标,0,元素1,元素2,....) - 在指定的下标签插入多个指定的元素
arr1 = [1, 2, 3, 4, 5, 6]
arr1.splice(2,0,4,5)
console.log(arr1)
//3.删
console.log('===============删除===================')
//数组.pop() - 取出数组中的最后一个元素
arr1.pop()
console.log(arr1)
//数组.shift() - 取出数组中第一个元素
arr1.shift()
console.log(arr1)
arr2 = [12, 3, 53, 2, 5, 23, 56]
arr2.splice(1,1)
console.log(arr2)
//数组.splice(开始删除的下标,删除的个数)
//4.改
//数组[下标] = 值
arr1[0] = 200
console.log(arr1)
//5.排序
//sort(函数对象)
//函数对象 - 函数,有两个参数(代表数组中的两个元素),返回值代表排序方法
console.log('===============排序===================')
nums = [34, 23, 54, 4, 7, 41, 34, 56]
//数组元素从大到小排序
new_nums = nums.sort(function(a, b){return b-a})
console.log(new_nums)
//数组元素从小到大排序
new_nums = nums.sort(function(a, b){return a-b})
console.log(new_nums)
students = [
{name:'小明', age:18, score:90},
{name:'小花', age:17, score:76},
{name:'小红', age:14, score:56},
{name:'小李', age:19, score:89}
]
//将数组元素按照元素的age属性从小到大排序
// students.sort(function(a, b){return a.age - b.age})
// console.log(students)
//将数组元素按照元素的score属性从大到小排序
students.sort(function(a, b){return b.score - a.score})
console.log(students)
</script>
9.对象
<script type="text/javascript">
//1.什么是对象
//和python类的对象一样,主要由对象属性和对象方法组成
//2.创建对象
//1)对象值
obj1 = {
name:'晓晓',
age:19,
gender:'女'
}
console.log(typeof(obj1), obj1)
//2)new 类型()
obj2 = new Object()
console.log(typeof(obj2), obj2)
//3.构造方法 -- 一个用来创建对象的函数
//1)函数名相当于类名,首字母要大写
//2)函数的功能是通过this添加对象属性和对象方法(这儿的this就相当于self)
function Person(){
//添加对象属性
this.name = name
this.age = age
this.gender = gender
//添加对象方法
this.eat = function(food){
console.log(this.name+'在吃'+food)
}
return this
}
//4.使用构造方法创建对象
//对象 = new 构造方法()
p1 = new Person('小花', 30, '女')
p2 = new Person('小明', 12)
//5.通过对象使用对象属性和调用对象方法
p1.name = '小花花'
console.log(p1.name, p1['name'])
p1.eat('面条')
p1.eat('面包')
//6.添加/修改属性
//对象.属性 = 值
</script>