逆袭之路——python 前端开发JavaScript之运算符、流程控制、函数、内置对象、BOM与DOM操作【day42】

今日内容概要

  • 运算符
  • 流程控制
  • 函数
  • 内置对象
  • BOM与DOM 操作
    请添加图片描述

今日内容详细

一、运算符

  1. 算数运算符
	var x=10;
	var res1=x++;  '先赋值后自增1'
	var res2=++x;  '先自增1后赋值'
  1. 比较运算符
	  弱等于:自动转换类型
	  '5' == 5  '结果是true js会自动转换成相同数据类型比较值是否一样'
	  强等于:不转换类型
	  '5' === 5  '结果是false'
  1. 逻辑运算符
	python中使用 andornot
  js中使用&&||、!

二、流程控制

  1. if 判断
	  1.if分支
	  	if(条件){
	      条件成立执行的分支代码块
	    }
	  2.if...else分支
	  	if(条件){
	      条件成立执行的分支代码块
	    }else{
	      条件不成立执行的分支代码块
	    }
	  3.if...else if...else分支
	  	if(条件1){
	      条件1成立执行的分支代码块
	    }else if(条件2){
	      条件1不成立条件2成立执行的分支代码块
	    }else{
	      条件12都不成立执行的分支代码块
	    }
	  4.switch语法
	  	var n1 = 1;
	    switch (n1) {
	      case 0:
	      console.log("干饭");
	      break;  # 如果不加break会基于当前位置一直往下运行
	      case 1:
	      console.log("睡觉");
	      break;
	      case 2:
	      console.log("玩耍")
	    default:  # 没有对应条件统一执行default子代码
	      console.log("无所事事!!!")
	    }
  1. while循环
		while(循环条件){
	    循环体代码
	  }
  1. for循环
		for(初始值;循环条件;每次循环之后的操作){
	    循环体代码
	  }
	  循环打印09的数字
	    for (var i=0;i<10;i++) {
	      console.log(i);
	    }
	"""
	使用for循环打印出数组内所有的元素
		var l1 = [11, 22, 33, 44, 55]
		for(var i=0;i<l1.length;i++){
	    console.log(l1[i])
		}
	"""

请添加图片描述

三、 三元运算符

  1. python中的三元运算
		res = 11 if 1 > 2 else 22
	  '''if后面的条件成立则使用if前面的值 不成立则使用else后面的值'''
  1. js中的三元运算
		res = 1 > 2 ? 11 : 22
	 	'''问号前面的条件成立则使用冒号左边的值 否则使用冒号右边的值'''
	# 三元运算一般情况下都不推荐嵌套使用!

四、 函数

"""
函数定义:
  function 函数名(参数1,参数2){
    函数体代码
    return 返回值
  }
  1.function 定义函数的关键字 相当于python中的def
  2.函数名的命名参考变量名 并且js推荐使用驼峰体(Myfunc\MyFunc)
  3.参数可写可不写
  4.return返回值
函数调用:
	函数名加括号 有参则传参即可!!!
"""
  1. 无参函数
		function f1(){console.log(111)}
	  f1()
  1. 有参函数
	  function f2(a, b){console.log(a,b)}
	  f2()  # 可以调用 相当于传了两个undefined
	  f2(1)  # 可以调用 
	  f2(1,2)  # 可以调用
	  f2(1,2,3,4,5)  # 可以调用
	  '''js中的函数提供了有个内置关键字arguments:接收所有参数'''
	  function f2(){
	    console.log(arguments)
	    if (arguments.length === 0){
	      console.log('什么参数都没传')
	    }else if(arguments.length === 1){
	      console.log('传了一个参数')
	    }else{
	      console.log('传了多个参数')
	    }
	  }
  1. 返回值参数
	return不支持返回多个数据
  1. 匿名函数
	var ff = function (){
	    	console.log(123)
		}
  1. 箭头函数(drf 中vue框架会用)
		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;  //这里的return只能返回一个值,如果想返回多个值需要自己手动给他们包一个数组或对象中
	  }
	"""针对js的函数学习到这里就足够了"""
	了解:作用域(与python一致)

五、 自定义对象

	# 自定义对象(相当于python里面的字典)
	var d1 = {'name':'jason','age':18}
	python字典取值操作js中的自定义对象都有 并且自定义对象还可以直接通过句点符取值 更像一个对象
	取值操作
		d1.name  # jason
	循环取值
		for(var i in d1){
	    console.log(d1[i])
	  }
	 
	定义自定义对象还有一种标准格式(自定义对象 内置对象 第三方对象)
	var d2 = new Object()  # 相当于生成了空字典
	
	"""自行查阅往期笔记 实现字典句点符取值"""

六、内置对象

  • 内置对象可以看成是python中的内置方法 内置模块等提前写好直接调用
  1. Date对象
		var d1 = new Date()
		d1.toLocaleString()			'2022/4/28 10:47:01'
		d1.toLocaleDateString()	'2022/4/28'
		d1.toLocaleTimeString()	'10:47:01'
		
		//getDate()                 获取日
		//getDay ()                 获取星期
		//getMonth ()               获取月(0-11//getFullYear ()            获取完整年份
		//getYear ()                获取年
		//getHours ()               获取小时
		//getMinutes ()             获取分钟
		//getSeconds ()             获取秒
		//getMilliseconds ()        获取毫秒
		//getTime ()                返回累计毫秒数(1970/1/1午夜)
  1. 小练习:2022-4-28 11:11 星期三
		const WEEKMAP = {  
		  0:"星期天",
		  1:"星期一",
		  2:"星期二",
		  3:"星期三",
		  4:"星期四",
		  5:"星期五",
		  6:"星期六"
		};  //定义一个数字与星期的对应关系对象
		
		
		function showTime() {
		    var d1 = new Date();
		    var year = d1.getFullYear();
		    var month = d1.getMonth() + 1;  //注意月份是从0~11
		    var day = d1.getDate();
		    var hour = d1.getHours();
		    var minute = d1.getMinutes() < 10?"0"+d1.getMinutes():d1.getMinutes();  //三元运算
		
		    var week = WEEKMAP[d1.getDay()];  //星期是从0~6
		
		    var strTime = `
		    ${year}-${month}-${day} ${hour}:${minute} ${week}
		    `;
		    console.log(strTime)
		};
		
		showTime();

七、JSON 对象

	# python中如何序列化反序列
		import json
	  json.dumps()
	  json.loads()
	# js中如何序列化反序列化
		JSON.stringify()
	  JSON.parse()

八、正则对象

	# 创建正则表达式的两种方式
	var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9]{5,11}");
	var reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/;  # 推荐使用(简化)
	
	# 使用正则
	reg2.test('jason123')   true
	'''括号内什么都不写 就相当于写了undefined'''
	reg2.test() 						true
	"""
	验证
	var reg3 = /undefined/
	reg3.test('jason666')		false
	reg3.test('undefined')	true
	reg3.test()							true
	"""
	
	# 全局匹配
	在正则表达式的最后添加一个字母g
	var reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/g;
	reg3.lastIndex
	0
	reg3.test('jason666')
	true
	reg3.lastIndex
	8
	reg3.test('jason666')
	false

九、 BOM操作(了解)

	Browser Object Model是指浏览器对象模型,它使 JavaScript 有能力与浏览器进行“对话”
	window.open('https://www.baidu.com','','width=400,height=400')
	# 打开子页面 
		子页面的操作其实可以通过一些手段传递给父页面(父子联动)
	# 关闭页面
		window.close()  
	 
	window.navigator.appVersion
	window.navigator.userAgent
	
	
	window.history.forward()  # 前进一页
	window.history.back()  # 后退一页
	
	
	window.location.href  # 获取页面的url地址
	window.location.reload()  # 刷新页面
	window.location.href = url  # 跳转到指定页面
	"""window可以省略不写"""
	
	# 弹框系列
		alert("你看到了吗?")  							 警告
	  confirm('要不要敲老赵的天灵盖')				确认
	  	获取用户是点击取消还是确认 返回false和true
	  prompt('你还有什么要交代的吗')				提示
	  	获取用户输入的内容 也可以通过第二个参数添加默认内容
	   
	# 计时器
		'''单次定时'''
		var t = setTimeout(showMsg,9000)  # 9秒钟之后自动执行showMsg
		clearTimeout(t)  # 取消定时器
	  '''循环定时'''
	  var s = setInterval(showMsg,3000)  # 每隔3秒执行一次
	  clearInterval(s)  # 取消定时器
	  
		function showMsg() {
	            alert(123)
	        }
	  var t = setInterval(showMsg,3000)
	  function clearMsg() {
	    clearInterval(t)
	  }
	  setTimeout(clearMsg, 9000)

补充说明

	    由于DOM是操作页面上的HTML代码 但是HTML页面加载顺序是从上往下
	所以如果想要我们的代码能够正常执行 必须要先等待html页面加载完毕 
	
	解决的措施之一:
	  	将script标签写在body内最下方

十、 DOM操作

	Document Object Model是指文档对象模型,通过它可以操作HTML文档的所有元素
	但是HTML页面上有很多相同的标签 所以我们在操作HTML标签之前还要先学会如何查找标签(js查找标签)
	
	'''直接查找'''
	# 通过标签名查找标签
	document.getElementsByTagName('div')  # 数组套标签对象
	# 通过class值查找标签
	document.getElementsByClassName('c1')  # 数组套标签对象
	# 通过id值查找标签
	document.getElementById('d1')  # 标签对象本身
	
	'''间接查找'''
	parentElement            父节点标签元素
	children                 所有子标签
	firstElementChild        第一个子标签元素
	lastElementChild         最后一个子标签元素
	nextElementSibling       下一个兄弟标签元素
	previousElementSibling   上一个兄弟标签元素
	# 方法得出的标签对象还可以继续点击上述方法

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

絵飛·的魚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值