5.1 什么是js
1.什么是js
js是JavaScript的缩写,是web标准中的行为标准,负责网页中变化的部分。
2.在哪写js代码。
a.写在标签的时间相关属性中,例如按钮的onclick属性
b.写在script标签中(将js代码作为script标签的内容)
c.写在js文件中,在html中通过script标签将文件导入。(script标签的src属性就是要导入的js文件的路径)
3.js能做什么
a.在网页指定位置插入标签
b.修改网页中标签的内容
c.修改标签样式
4.怎么写js代码
javascript是一门编程语言,和python一样是脚本/动态语言。和java没联系
注意:script标签理论上可以放在任何位置,但是一般放在head或body中。
补充:
window.alert(信息)-js代码,在浏览器上弹出一个对话框,对话框显示指定信息。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<!--1.js代码写在哪-->
<!--c位置3-->
<script type="text/javascript" src="js/index.js">
</script>
<!--b位置2-->
<script type="text/javascript">
//在这写js代码
window.alert('莲生三十二')
</script>
</head>
<body>
<!--a位置1-->
<button onclick="window.alert('一剑光寒十九州')">不准点</button>
<hr />
<!--js能做什么-->
<!--a.插入内容-->
<script type="text/javascript">
arr = ['海贼王','火影','一拳超人']
// for(i=0;i<3;i++){
// document.write('<h1>我是js代码写的标题</h1>')
// }
for (i in arr) {
message = '<h1>'+arr[i]+'</h1>'
//在网页中添加内容
document.write(message)
}
</script>
<!--b修改标签内容-->
<p id="p1">我是段落</p>
<p id="p2">我是段落2</p>
<button onclick="document.getElementById('p1').innerHTML='我是js!!'">修改内容</button>
<hr />
<!--c修改标签样式-->
<button onclick="document.getElementById('p2').style='color:red;font-size:30px;'">
修改样式
</button>
</body>
</html>
5.2 js基本语法
<script type="text/javascript">
1.控制台输出
console.log(输出的内容) - 和print功能一样
console.log(100)
console.log('abc')
console.log('abc',1233)
2.注释 - 和c一样
//单行注释
/*
*多行注释
*多行注释
*/
3.标识符
由字母数字下划线和$符组成,数字不能开头
a = 10
a20 = 122
a_2 = 111
$22 = 333
12a = 12 as^ = 200 报错
4.行和缩进
从语法来说js代码没有换行缩进要求,通过{}来确定代码块。
5.常见的数据类型:数字、布尔、字符串、数组、对象、函数(类型名大写)
a数字(Number):包括整数和小数;如:100 12.5 -20 -3.14
支持科学计数法,不支持虚数
console.log(3e2) //300
b布尔(Boolean):只有两个值true和false,这两个是关键字。代表真假
c字符串(String):js中只有单行字符串,'' ""都可以
console.log('我是单引号',"我是双引号",3e3)
d数组(Array):相当于python中的列表。
e对象(Object):表现时像字典,用时像对象。{}
obj1 = {name:'小花',age:18}
console.log('字典方式取值',obj1['name'])
console.log('对象方式取值',obj1.name)
f函数(Function):相当于python中的函数
//声明函数
function eat(food){
console.log('吃'+food)
}
//调用函数
eat('米饭')
</script>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
</html>
5.3 变量
<script type="text/javascript">
1.变量的声明
语法1: 变量名=值
变量名:标识符,不能是关键字;驼峰式命名,第一个单词首字母小写,后面每个单词首字母大写,见名知意
语法2:var 变量名 = 值 或 var 变量
var:声明变量关键字
区别:加var,变量可以不用赋值,默认undefined;不加var必须赋值,否则会报错
补充:js中两个特殊值:undefined(没有,空;常用于自动赋值空,如:打印一个未声明的变量时,会默认空)和null(清空,需要手动赋值)
console.log(name)
name1 = 2
console.log(name1) //2
var age
console.log(age) //undefined,通过var声明变量不赋值时,默认为undefined
age = 18 //重新给变量赋值
//同时声明多个变量赋同一个值
a1 = a2 = a3 = 10
console.log(a1,a2,a3) //10 10 10
//同时声明多个变量赋不同值
var a1 = 1, a2 = 2, a3 = 3 // 等价a1 = 1, a2 = 2, a3 = 3
console.log(a1,a2,a3) //1 2 3
</script>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
</html>
5.4 运算符
<script type="text/javascript">
1.数学运算符:+ - * / % ++ --
前5个和python一样
++ --都是单目运算符:变量++/-- ++/--变量
a.变量++:变量自增1
b.变量--:变量自减1
num = 10
num++ //11
++num //12
num-- //11
--num //10
坑:用一个变量单独使用++/--时,++/--放前后效果一样;
如果使用++/--给另一个变量赋值,++/--放前面是先自加/自减再赋值,放后面先赋值,再自加自减
num2 = 10
num = num2++ //num=num2;num2 += 1
console.log(num,num2) // 10 11
num2 = 10
num = ++num2 //num2 +=1;num=num2
console.log(num,num2) // 11 11
2.比较运算符:< > == != >= <= ; === !==
比较大小的和python一样,结果是布尔值
a.==判断值是否相等
b.===完全相等,判断值和类型是否相等,相当于python中的==,!==相当于python中的不等
console.log(5 == 5) //true
console.log(5 == '5') //true
console.log(5 != 5) //false
console.log(5 != '5') //false
console.log(5 === 5) //true
console.log(5 === '5') //false
console.log(5 !== 5) //false
console.log(5 !== '5') //true
3.逻辑运算符:&&(and,逻辑与) ||(or,逻辑或) !(not,逻辑非)
运算规则,和使用方式和python一样
console.log('=========')
4.赋值运算符:= += -= *= /= %=
和python一模一样
5.三目运算符:?:
条件语句?值1:值2:判断条件语句值是否为true,是则表达式结果为值1,否则为值2
age = 18
is_man = age>=18?'成年':'未成年'
console.log(is_man)
6.运算顺序
数学>比较>逻辑>赋值 如果有括号,其优先级最高
</script>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
</html>
5.5 分之结构
<script type="text/javascript">
- js中分支有两种:if和switch
1.if语句
a:if
if (条件语句){
满足条件会执行的代码
}
b:if-else
if (条件语句){
代码段1
}else{
代码段2
}
c:if-else if-else
if (条件语句){
代码段1
}else if(条件语句2){
代码段2
}else{
代码段3
}
执行过程和python一模一样*/
num = 10
if(num%2){
console.log('奇数')
}else{
console.log('偶数')
}
2.switch语句
a:结构:
switch(表达式){
case 值1:
代码段1
case 值2:
代码段2
default:
代码段3
}
b:执行过程
使用表达式值按顺序与case后的值进行比较,看是否相等,找到第一个和表达式相等的case,将此case作为入口,依次执行后面所有的代码,直到执行完成,或者遇到break为止。如果每个case都和表达式不等,就执行default后的代码。
注意:case后面必须是一个有结果的表达式
a=10
switch(a){
case 5:
console.log('表达式1')
case 6:
console.log('表达式2')
case 10:
console.log('表达式3')
case 11:
console.log('表达式4')
default:
console.log('表达式5')
}
//练习:用一个变量保存10分制成绩,根据成绩打印情况:0-5不及格,6及格,7-8良好,9-10优秀
score = 10
switch (score){
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
console.log('不及格')
break
case 6:
console.log('及格')
break
case 7:
case 8:
console.log('良好')
break
default:
console.log('优秀')
}
</script>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
</html>
5.6 循环结构
<script type="text/javascript">
js循环结构:for、while
1.for循环
a.for-in
for(变量 in 序列){
循环体
}
执行过程和python一样,但是变量取到的不是元素。而是下标/key(属性名)
序列:字符串,数组,对象
for(x in '543210'){
console.log(x,'543210'[x])
}
arr1 = [1, 'aaa', true, 12.8]
for(x in arr1){
console.log(x,arr1[x])
}
person1 = {name:'小王八',age:10}
for(x in person1){
console.log(x,typeof(x))
console.log(person1[x])
}
b.c的for循环
结构:
for(表达式1;表达式2;表达式3){
循环体
}
执行过程:先执行表达式1,然后判段表达式2的值是否为true,如果为true执行循环体,执行完循环体后执行表达式3,再判断
表达式2的值是否为true,如果为true执行循环体,执行完循环体后执行表达式3。。。
相当于:
表达式1
while(表达式2){
循环体
表达式3
}
console.log('==========')
for(i=1;i<=100;i++){
i += i
console.log(i)
}
console.log(i)
2.while循环
a.python的while循环
while(条件语句){
循环体
}
执行过程和python一样
b.do-while循环
do{
循环体
}while(条件语句)
区别:do-while的循环体至少会执行一次*/
//1+2+3+。。。+100(do-while)
i=sum=0
do{
sum+=i
i++
}while(i<101)
console.log(sum)
</script>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
</html>
5.7 函数
<script type="text/javascript">
- 函数
1.函数声明
function 函数名(参数列表){
函数体
}
js中函数除了声明关键字不一样,其它的都一样
参数可设置默认值,也可以通过关键字参数调用
function my_sum(num1,num2=2){
return num1+num2
}
2.函数调用,js中函数都有返回值,默认是undefined
console.log(my_sum(1,2))
console.log(my_sum(1))
console.log(my_sum('¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥'))
function f1(){
console.log('我没有return值')
}
console.log(f1(), typeof(f1()))
console.log(my_sum('¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥'))
3.匿名函数(函数的字面量)
函数名=function(参数列表){函数体}
var quan_ju_1 = 1008 //此处可以在函数中修改,也可在外修改
quan_ju = 1004
f2 = function(a,b){
ju_bu = 10
var ju_bu_b = 100 // 局部变量
console.log(a,b)
console.log(quan_ju)
return a*b
}
console.log(f2(3,4))
console.log('+++++++++++++++++++++++')
console.log(ju_bu)
4.变量作用域
a.全局变量:只要声明在函数外面的变量就是全局变量;在函数中以 变量名=值 的形式声明的变量也是全局的,前提是函数被调用过
b.局部变量:以var关键字声明在函数中的变量,才是局部变量
</script>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
</html>
5.8 字符串
<script type="text/javascript">
1.字符串字面量
a.使用双引号或者单引号括起来的字符集
b.除了普通字符外还可以是转义字符\n \t \ ' "
c.\u四位16进制值对应的Unicode编码,如:\u4e00 (一)
str1 = 'abc\n314143'
console.log(str1) // 换行
2.获取字符
字符串[下标]:获取单个字符
下标:范围是0~长度减1;下标越界不会报错,取到的值是undefined
js中没有切片方法
str2 = 'hello js'
console.log(str2[1]) // e
3.相关运算+
支持字符串和其他任何数据相加,是将其他数据全部转换成字符串,然后再拼接。
console.log('123'*2) // NaN;js中一个特殊的值,类似undefined、null,用来表示一个不存在的数值。
str3 = 'a'+[1, 'e', true]
console.log(str3) // a1,e,true
//补充:js中数据类型转换 类型名(需要转换的数据)
num_str = String(12314)
str_num = Number('232431.12')
str_num = Number('wqw232431.12') // NaN
4.字符串长度
console.log('hello world'.length) // 11
5.字符串相关方法(见菜鸟教程)
console.log('abc'.charAt(2)) // c
console.log(String.fromCharCode(97)) // a
console.log('abcd12abc23hhh123'.match(/\d+/)) //数字出现1次或多次
console.log('abcd12abc23hhh123'.replace(/\d+/g,'*')) //abcd*abc*hhh*
console.log()
console.log()
console.log()
console.log()
console.log()
6.js中数组只需要关注:1.怎么获取元素 2.数组的方法 3.元素可以是所有类型
arr = []
console.log(arr)
</script>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
</html>
网友评论