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

JS简介

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

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

IT行业鄙视链: 后端 > 前端、运维、测试、产品、老板
前端想一统天下:node.js
    
JS发展史>>>:JavaScript很容易学习

JS基础

1.注释语法
	// 单行注释
	/*多行注释*/
    
2.引入js的多种方式
	1.head内script标签内编写
	2.head内script标签src属性引入外部js资源
	(* 1.2方式容易导致未页面未全部加载完成就使用js,很容易发生报错)
	3.body内最底部通过script标签src属性引入外部js资源(最常用)
	ps:注意页面的下载是从上往下的 所以操作标签js代码一定要等待标签加载完毕再执行才可以正常运行
        
3.结束符号
	分号(很多时候不写也没问题)

变量与常量

"""
1.pycharm创建js文件或者html文件(适合编写较为复杂的js代码)
2.浏览器提供编写js代码的环境(右键选择检查,console)
"""

image

console.log()
	相当于是python中的print 打印
在js中声明变量需要使用关键字
    换行 shift+回车
    赋值需要声明,也可以只声明不赋值,用的时候在赋值,修改的时候也不用在声名
	
	var
    	var name = 'jason';  全局变量
 	let
    	let name = 'tony';   局部变量
		
	ps:let是ECMA6新语法 可以在局部定义变量不影响全局
	
在js中声明常量也需要使用关键字
	const 
    	const pi = 3.14;  不能更改

基本数据类型

"""
在JS中查看数据类型的方式 typeof
typeof s3  直接加变量名就好,不用加括号
"""
	1.数值类型(Number)
	parseInt(123.23)
	123     转整型
	
	parseFloat(123)
	123     转浮点型,但是不会自动添加小数位
	
	parseFloat(123.23)
	123.23   有小数位会自动保留
	
	parseInt('jason')
	NaN     不是数值类型会显示NaN
	
	在JS中整型与浮点型不分家 都叫Number
	NaN也属于数值类型 意思是:不是一个数字(Not A Number)
2.字符类型(String)
	定义字符类型有三种方式
	1.单引号		'jason'
 	2.双引号		"jason"
  	3.模板字符串     `jason`  可以放多行文本,支持格式化输出
	
	 let name1 = 'jason'
    let age1 = 18
    let desc = `my name is ${name1} my age is ${age1}`
	desc 
	'my name is &{name} my age is &{age}'
    
 	1.字符串拼接推荐使用加号(除了python不推荐,其它语言都推荐)
	'hello' + 'kevin'
	'hellokevin'
	
	2.常见内置方法
JavaScript 说明 python对应
.lenght 返回长度 len()
.trim() 移除空白 .strip()
.trimLeft() 移除左边的空白 .lstrip()
.trimRight() 移除右边的空白 .rstrip()
.charAt(n) 返回第n个字符 索引取值[]
.index('j',j的索引位数) 子序列位置
.concat(value,value) 拼接 .join(字符串,字符串)
.slice(start,end) 切片 字符串[起始位数:结束位数]
.toLowerCase() 小写 .lower()
.toUpperCase() 大写 .upper()
.split(delimiter,limit) 分割 .split(分割符,分割次数)
    
3.布尔类型(Boolean)
	JS里面的布尔值与Python不同
    	JS是纯小写的 而Python是首字母大写
	(空字符串)、0、null、undefined、NaN都是false,其余都是ture
    
4.null与undefined(都是空)
	null表示值为空(曾经拥有过) 
	undefined表示没有定义(从来没有过)
JavaScript 说明 python对应
.length 返回数组内数据的个数 len
.push(ele) 尾部追加元素 .append()
.pop() 获取尾部的元素 .pop()
.unshift(ele) 头部插入元素 .insert 任意位置插入数据
.shift() 头部移除元素 del remove pop等方法
.slice(start, end) 切片 python切片操作
.reverse() 反转 .reverse()
.join(seq) 将数组元素连接成字符串
.concat(val, ...) 连接数组 .extend() 扩展列表
.sort() 排序 .sort()
.forEach() 将数组的每个元素传递给回调函数
.splice() 删除元素,并向数组添加新元素。
.map() 返回一个数组元素调用函数处理后的值的新数组 .map()映射
5.对象(object)
	对象之数组(Array)>>>:类似于python中的列表
        let l1 = []
	对象之自定义对象(Object)>>>:类似于python的字典
        let d1 = {'name':'jason',}
        let d2 = new Object();
	

运算符

1.算术运算符
	+ - * / % ++(自增1) --(自减1)
		var x=10;
    	var res1=x++;  加号在后面	先赋值后自增
		res1 = 10
		     赋值后增加1,此时x已经等于11
    	var res2=++x;	加号在前面	 先自增后赋值
		res2 = 12
		
2.比较运算符
	!=(值不等 弱) ==(值相等 弱) ===(值相等 强) !==(值不等 强)

image

	ps:会不会自动转换类型
3.逻辑运算符
	&&(与)	||(或)  !(非)
python	and(与)	or(或)	not(非)

流程控制

1.if分支
	if (条件){
        条件成立执行的代码
    }
2.if...else分支
	if(条件){
        条件成立执行的代码
    }else{
        条件不成立执行的代码
    }
3.if...else if...else分支
	if(条件1){
        条件1成立执行的代码
    }else if(条件2){
        条件1不成立条件2执行的代码
    }
    else{
        条件12都不成立执行的代码
    }
4.如果分支结构中else if很多还可以考虑使用switch语法
	switch(条件){
        case 条件1:
        	条件1成立执行的代码;
        	break;  如果没有break会基于某个case一直执行下去
        case 条件2:
        	条件2成立执行的代码;
        	break;
        case 条件3:
        	条件3成立执行的代码;
        	break;
       	case 条件4:
        	条件4成立执行的代码;
        	break;
        default:
  			 条件都不满足执行的代码
    }
 
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)
    }
	name
	age
	
while循环
	while(循环条件){
        循环体代码
    }
    
"""
三元运算
	python中:   值1 if 条件 else 值2    条件成立用值1,不成立用值2
	JS中:	   条件?值1:值2       条件成立用?后面的值1,不成立用:后面的值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(); 
//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 @   DYuH  阅读(682)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示