JavaScript

JavaScript

JS全称JavaScript,是一门前端工程师的编程语言。

  • 目前,JS既可以开发浏览器端的交互效果,还可以进行后端开发
  • JS是解释型语言,无需编译,直接执行
  • 具有弱类型语言(弱类型语言,数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。你想把这个变量当做什么类型来用,就当做什么类型来用,语言的解析器会自动(隐式)转换。)、基于对象、跨平台性的特点
  • 主要应用于开发浏览器端的交互效果,后端开发,例如:创建WEB服务器,访问数据库,调用其它服务器......

JS语法规范

  • 区分大小写
  • 每行代码结束的分号可以省略
  • 分为单行注释(// 单行注释)和多行注释(/* 多行注释 */)

引入JS的多种方式

1.head内script标签内编写
2.head内script标签src属性引入外部JS资源
3.body内最底部通过script标签src属性引入外部JS资源(常用)
	"PS:页面的下载是自上往下的,所以操作标签JS代码一定要等待标签加载完毕再执行才可以正常运行"
4.结束符号
	分号(;),很多时候不写也没问题

变量与常量

"""
pycharm创建JS文件或者HTML文件(适用于编写复杂的JS代码)
浏览器提供编写JS代码的环境
"""

# JS中声明变量需要使用关键字(var、let—— 字符串)
var声明的变量可以用来保存任何类型的值,声明的范围是函数作用域;
	var
    	var name='jsaon';
let声明的范围是块作用域;
	let
    	let name='tony';
# let 是ECMA6新语法,可以在局部定义变量不影响全局
"ps:声明变量未赋值为undefined,变量可多次赋值且赋不同类型的值"

# JS中声明常量需要使用关键字const(数字)
	const
    	const pi = 3.14;
"声明以后不允许为空,不允许重新赋值"

基本数据类型

"""
js中查看数据类型的方式—— typeof
"""
1.数值类型(number)
	js中整型与浮点型都叫 Number,NaN也属于数值类型,意思是:
不是一个数字(Not A Number)
    var a1=32.00; # 使用小数点来写
    var a2=32;    # 不使用小数点来写
极大或极小的数字可以通过科学计数法来写:
	var x=123e5; #  12300000
	var y=123e-5; # 0.00123
常用方法:
parseInt("123") #123
parseInt("haha")# NaN,表示值不是数字
parseFloat("123.23") # 123.23

2.字符类型(string)
被引号包含的值,不区分单双引号。
单引号		'jason'
双引号		"jason"
模板字符串  `jason`
let name1 = 'jason'
let age1 = 18
undefined
let desc = `my name is ${name1} my age is ${age1}`
eg:
    var a="hello"
    var b="everyone";
    var c=a+b;
    console.log(c); 
    # helloeveryone
    
3.布尔类型(boolean)
var x =true;
var y= false;
# ""(空字符串)、0、null、undefined、NaN都是false

4.null(空)与undefined(未定义)
undefined,声明变量未赋值时为undefined;还有函数无返回值时也返回undefineed(从未有过)
null表示值为空,在需要指定或清空一个变量时才会使用(曾经拥有)


5.对象(object)
数组,类似于python中的列表
let l1=[]
自定义对象,类似于python中的字典
let d1={'name':'jason',}
let d2=new object();
# 获取值,d1.name=jason

运算符

# 算数运算符
+ - * / % ++ --

var x=10;
var res1=x++;# 先取值再自增
var res2=++x;# 先自增再取值

res1;
10
res2;
12

# x++和++x出现在赋值运算式,x++会先赋值再进行自增1运算,而++x会先进行自增运算再赋值

# 比较运算符
> >= < <= != == === !==
== “1”  // true  弱等于
=== "1"  // false 强等于
"JS是一门弱类型语言(会自动转换数据类型),当用两个等号进行比较时,JS内部会自动先将数值类型的1转换成字符串类型的1再进行比较,所以写JS代码涉及到比较时尽量用三等号来强制限制类型,防止判断错误"

# 逻辑运算符
&& || !

# 赋值运算符
= += -= *= /=

流程控制

1.单if分支
	if (条件){
        条件成立执行的代码
    }
# if
if (a>5){
    console.log("yes");
}

2.if...else分支
	if(条件){
        条件成立执行的代码
    }else{
        条件不成立执行的代码
    }
# if-else
if (a>5){
    console.log("yes");
}
else{
    console.log("no");
}

3.if...else if...else分支
if(条件1){
    条件1成立执行的代码
}else if(条件2){
    条件1不成立条件2执行的代码
}
else{
    条件1和2都不成立执行的代码
}
# if-else if-else
var a=10;
if(a>5){
    console.log("a>5");
}
else if(a<5){
    console.log("a<5");
}
else{
    console.log("a=5");
}


4.如果分支结构中else if很多还可以考虑使用switch语法
switch(条件){
    case 条件1:
    条件1成立执行的代码;
    break;  如果没有break会基于某个case一直执行下去
    case 条件2:
    条件2成立执行的代码;
    break;
    case 条件3:
    条件3成立执行的代码;
    break;
    case 条件4:
    条件4成立执行的代码;
    break;
    default:
    条件都不满足执行的代码
}
# switch
var day = new Date().getDay();
switch (day) {
  case 0:
  console.log("Sunday");
  break;
  case 1:
  console.log("Monday");
  break;
default:
  console.log("...")
}
# switch中的case子句通常都会加break语句,否则程序会继续执行后续case中的语句。

5.for循环
	for(起始条件;循环条件;条件处理){
        循环体代码
    }
#for循环   
for(let i=0;i<10;i++){
    console.log(i)
}
let dd = {'name':'jason','age':18}
for(let k in dd){
    console.log(k)
}

6.while
while循环
	while(循环条件){
        循环体代码
    }
# while 循环
var i = 0;
while (i < 10) {
  console.log(i);i++;
}

# 三元运算
python中:值1 if 条件 else 值2
JS中:条件?值1:值2
var a=1;
var b=2;
var c=a<b?a:b
"""
三元运算顺序是先写判断条件a<b,若条件成立则返回的值为a;若条件不成立则返回的值为b
"""
# 赋值a=8,b=10:
    var a=8,b=10;
    var x=a<b ?a:b;
    x
    8
    

函数

"""
python中函数的定义
	def 函数名(形参):
		'''函数注释'''
		函数代码
		return 返回值
"""
function 函数名(形参){
    //函数注释
    函数体代码
    return 返回值
}

# 匿名函数
var s1=function(a,b){
    return a+b;
}

# 箭头函数
var f=v => v;
var f= function(v){
    return v;
}

1. JS中函数的形参与实参个数可以不对应,传少了undefined,传多了用不着
2.函数体代码中有一个关键字arguments用来接收所有的实参
3.函数的返回值如果有多个需要自己处理成一个整体

内置对象

var d = new Date(); 
//getDate()                 获取日
//getDay ()                 获取星期
//getMonth ()               获取月(0-11)
//getFullYear ()            获取完整年份
//getYear ()                获取年
//getHours ()               获取小时
//getMinutes ()             获取分钟
//getSeconds ()             获取秒
//getMilliseconds ()        获取毫秒
//getTime ()                返回累计毫秒数(从1970/1/1午夜)

let dd = {name: 'jason', age: 18}
JSON.stringify(dd)	序列化
JSON.parse(ss)	   反序列化

定义正则两种方式
var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9]{5,11}");
var reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/;
1.全局模式的规律
	lastIndex
2.test匹配数据不传默认传undefined

posted @ 2022-12-05 21:29  知了了了了  阅读(490)  评论(0)    收藏  举报