JS

内容概要

  • JS简介
  • 变量与常量
  • 基本数据类型
  • 运算符
  • 流程控制
  • 函数
  • 内置对象

JS简介

全称JavaScript但是与Java一毛钱关系都没有 之所以这么叫是为了蹭Java的热度

他是一门前端工程师的编程语言 但是它本身有很多逻辑错误(不是很严谨)

IT行业的鄙视链:后端 > 前端、运维、测试、产品、老板

前端想一统天下

JS基础

  1. 注释语法

    // 单行注释
    /*多行注释*/
    
  2. 进入js的多种方式

    1. headscript标签内编写

    2. headscript标签src属性引入外部js资源

    3. body内最底部通过script标签src属性引入外部js资源

      因为代码是从上往下运行的 有些js用到的名称再body里还没有加载完所以会报错 ,所以再body的最底部写script引入外部资源

  3. 结束符号

    分号(很多时候不写也没问题)

    但还是建议写上

变量与常量

"""
1.pycharm创建js文件或者html文件(适合编写)
2.浏览器提供编写js代码的环境
"""
在js中声明变量需要使用关键字
var 
	var name='jason';
var
	let name='tony';
ps:let是ECMA6新语法 可以在局部定义变量不影响全局在js中声明常量也需要使用关键字
const
	const pi = 3.14

当你定义一个常量的时候 你就不能修改了,而Python就没有这种限制全靠程序员自觉。

基本数据类型

"""
在JS中查看数据类型的方式 typeof
"""
1.数值类型(Number)
  在JS中整型与浮点型不分家 都叫Number
  NaN也属于数值类型 意思是:不是一个数字(Not A Number)
let a = 1
undefined
let b = 1.233
undefined
typeof(a)
'number'
typeof(b)
'number'

  1. 字符类型(String)

    单引号        'jason'
    双引号        "jaosn"
    模板字符串     `jason`
    
    a = 'jason'
    'jason'
    typeof(a)
    'string'
    a = "jason"
    'jason'
    typeof(a)
    'string'
    

    var name = 'jason'
    undefined
    var age = 18
    undefined
    var a1 = `my name is ${name} age ${age}`
    undefined
    a1
    'my name is jason age 18'
    

    如果用三引号定义就会报错

    而Python可以

字符串内置方法

  1. length字符串的长度 Python中 len()

  2. toLowerCase()转小写 P lower()

  3. toUpperCase()转大写 P upper()

  4. trim()去除两边的空白 P strip()

    trimLeft()去除左边的空白 P lstrip()

    trimRight()去除右边的空白 P rstrip()

  5. charAt(n)返回第 n 个字符 P a[n]

  6. indexOf(substring, start) 返回字符串的索引

    跟 Python中的find(n)差不多 找到返回索引找不到返回 -1

  7. substring(from, to)根据索引获取字符串

    跟 Python中的切片一样 顾头不顾尾

  8. slice(start,end)切片

  9. split(delimiter, limit)分隔 跟 Python 一模一样

字符串拼接一般用 +

  1. 布尔类型(Boolean)

    JS里面的布尔值与Python不同

    JS是纯小写的 而 Python是首字母大写

    空字符串、0、null、undefined、NaN都是 false

  2. null与undefined

    • null表示值是空的,一般需要指定或清空一个变量时才会使用,如name=null
    • undefined表示当声明一个变量但未初始化时,该变量的默认值是undefined。还有就是哈桑农户无明确的返回值时,返回的也是undefined。
  3. 数组

    数组对象的作用是:使用单独的变量名来存储一系列的值。类似于Python中的列表

    内置方法

    1. length数组的长度

    2. push(n)尾部追加元素 P append(n)

    3. pop()获取尾部元素 并且删除最后一个元素

      跟Python一模一样

    4. unshift()头部追加 P 虽然没有但是又 insert() 插入

    5. shift()头部移除

    6. slice(start, end)

    7. reverse()反转 Python颠倒列表顺序reverse()

    8. join(seq)将元素连成字符串 跟 Python

      '$'.join(列表)

    9. sort()排序 Python一样

    10. splice(index,howmany,item1,...item2)删除元素,并向数组添加元素

      a.splice(1,0,100) 从索引1开始删除0个元素添加100在1的位置

      a.splice(1,2)从索引1开始删除2个元素

  4. 对象(Objiect)

    JS里也有字典,但是它不叫字段叫自定义对象

运算符

  1. 算数运算符

    + - * / % ++(自增1) --(自减1)
    var x=10;
        	var res1=x++;  加号在后面	先赋值后自增
        	var res2=++x;	加号在前面	 先自增后赋值
    

  1. 比较运算符

    !=(值不等  弱)
    ==(值相等  弱)
    

    ===(值相等 强)
    !==(值不等强)
    

    ps:弱与强就是会不会自动转换类型

  2. 逻辑运算符

    && (与 and)  ||(或 or)  !(非 not )
    

流程控制

  1. if分支

    if(条件){
        条件成立执行的代码
    }
    
  2. if ...else分支

    if(条件){
        条件成立执行的代码
    }else{
        条件不成立执行的代码
    }
    
  3. if....else if....else分支

    if(条件1){
        条件1成立执行的代码
    }else if(条件2){
        条件2成立执行的代码
    }else{
        条件都不符合执行的代码
    }
    
  4. 如果分支结构中的else if过多还可以考虑使用switch语法

    switch(条件){
        case 条件1:
        	条件1成立执行的代码;
        	break;
        case 条件2:
        	条件2成立执行的代码;
        	break;
        case 条件3:
        	条件3成立执行的代码;
        	break;
        case 条件4:
        	条件4成立执行的代码;
        	break;
        default:
        	条件都不满足执行的代码   	
    }
    

    如果不加break

循环结构

1. for循环
	for(起始条件;循环条件;条件处理;){
        循环体代码
    } 

2. while循环
 while(循环体条件){循环体代码}
    
var a = [11, 22, 33, 44]
var b = 0
while(b < a.length){
    console.log(a[b])
    b++
}
 

三元运算

"""
三元运算
Python中:  值1 if 条件 else 值2
JS中     条件?值1:值2
JS中 条件符合 打印?后面的 
	不符合 打印值2

"""

函数

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

# 匿名函数
var s1 = function(a, b){
    return a + b
}
# 箭头函数
var f = v =>v;
var f = function(v){
    return v;
}

var f = () => 5;
var f = function(){return 5};

var sum = (num1, num2) => num1 + num2;
var sum = function(num1, num2){
    return num1 + num2
}
1.JS中函数的形参与实参个数可以不对应
	传少了就是undefined传多了不用
2.函数代码中有一个关键字arguments用来接收所有参数
3.函数的返回值如果又多个需要自己处理成一个整体

如果有多个返回值 只返回最后一个

你需要手动把多个值搞成一个值

内置对象

var d = new Date();
var a = new Date();
undefined
a.getDate()     获取日
5
a.getDay()      获取星期几(0~6)
1
a.getMonth()     获取月份(0~11)
11
a.getYear()		 获取那一年(从1970年一月一日午夜)
122
a.getHours()    获取小时
20
a.getSeconds()  获取秒
26
d.getMinutes();  获取分钟
8
a.getTime()    返回累计毫秒数(从1970/1/1午夜)
1670241686914

json

let dd = {name:'jaosn', age: 18}
var ss = 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 20:37  可否  阅读(38)  评论(0)    收藏  举报