前端语言之js(对比python快速入门)
昨日内容回顾
- 浮动
- 定位
- 溢出
- 透明度
- 模态框
今日内容概要
- 变量与常量
- 基本数据类型
- 数据类型内置方法
- 函数
- 常见内置对象
- BOM与DOM操作
内容详细
1.变量与常量
python"># 在JS中声明变量需要使用关键字 老版本 var(全部都是全局变量)
新版本 let(可以声明局部变量 推荐使用let)
"""
JavaScript的变量名可以使用_,数字,字母,$组成,不能以数字开头。
声明变量使用 var 变量名; 的格式来进行声明
"""
# 在JS中声明常量也需要使用关键字
const >>>声明一个真正意义上的常量
# 如何创建变量
var name = 'jason'
let name = 'jason01'
# 如何创建常量
const pi = 3.14
# 编写js代码的位置
1.pycharm提供的js文件
2.直接使用浏览器提供的编程环境
"""打开浏览器页面后 鼠标右键 选择检查 按下图所选即可"""
"""
pycharm在使用上述关键字的时候如果出现了报错 说明js版本没有选择6
需要我们自定义设置 settings>>>l&f>>>js 如图
"""
2.基本数据类型
# python基本数据类型 int 整型、float 浮点型、str 字符串、list 列表、dict 字典、bool 布尔值、tuple 元组、set 集合
# js基本数据类型
number、string、boolean、undefined、object()
# 查看数据类型
python中使用 type()
js中使用 typeof
3.number类型
# JavaScript不区分整型和浮点型,就只有一种数字类型var a = 12.34;
var b = 20;
var c = 123e5; // 12300000
var d = 123e-5; // 0.00123
# 还有一种NaN,表示不是一个数字(Not a Number)
parseInt 转整型
parseFloat 转浮点型
parseInt("123") // 返回123
parseInt("ABC") // 返回NaN,NaN属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。
parseFloat("123.456") // 返回123.456
"""NaN属于数值类型 表示的意思是 不是一个数字"""
4.string类型
# 定义字符类型的方式 1.单引号 ''
2.双引号 ""
3.反引号 ``
var s1 = `
jason老师
tony老师
kevin老师
`
# 在js中字符串的拼接推荐使用+号
# 格式化输出(模板字符串的功能)
var name1 = 'jason'
var age = 18
`my name is ${name1} my age is ${age} `
5.boolean类型
# 在python中布尔值类型首字母大写 True False
# 在js中布尔值类型全部小写
true false
""(空字符串)、0、null、undefined、NaN都是false
6.null与undefined类型
# null表示值是空,一般在需要指定或清空一个变量时才会使用 如 name=null;
# undefined表示当声明一个变量但未初始化时(只声明了变量,但还没有赋值)
该变量的默认值是undefined
还有就是函数无明确的返回值时,返回的也是undefined
'''null意思是厕纸用完了 undefined意思是厕纸都没装 如图'''
7.对象之数组类型
"""JavaScript 中的所有事物都是对象(Object):字符串、数值、数组、函数...
此外,JavaScript允许自定义对象
对象只是带有属性和方法的特殊数据类型
"""
# 数组对象的作用是:使用单独的变量名来存储一系列的值 类似于Python中的列表
li.splice(2,1) # 第一个参数是起始位置(按索引值确定位置) 第二个参数是删除元素的个数(不写默认就是1)
8.运算符
# + - * / % ++ -- > >= < <= != == === !==var x=10;
var res1=x++;
var res2=++x;
res1;
10
res2;
12
# 这里的x++和++x赋值运算式
x++会先给res1赋值再进行自增1运算 此时res1为10 x为11
而++x会先进行自增运算再赋值 此时x为11 res2为12
# 比较运算符中
== 弱等于 # 会自动转换数据类型至相同状态
=== 强等于 # 不会自动转换数据类型
1 == "1" // true 弱等于
1 === "1" // false 强等于
# 逻辑运算符(一一对应)
python中
and or not
js中
&& || !
9.流程控制
# if判断1.python中
if 条件:
条件成立之后执行的代码
else:
条件不成立执行的代码
2.js中
情况一:
if(条件){
条件成立之后执行的代码
}else{
条件不成立执行的代码
}
情况二:
if(条件1){
条件1成立之后执行的代码
}else if(条件2){
条件2成立之后执行的代码
}else{
条件都不成立执行的代码
}
# switch
var day = new Date().getDay();
switch (day) {
case 0:
console.log("Sunday");
break;
case 1:
console.log("Monday");
break;
default:
console.log("...")
}
# for循环
for(起始值;循环条件;每次循环后执行的操作){
for循环体代码
}
for (var i=0;i<10;i++) {
console.log(i);
}
# 练习:如何使用for循环取出数组内的每个元素
var l1 = [111,222,333,444,555,666]
for(let i=0;i<l1.length;i++){
console.log(l1[i])
}
# while循环
while(循环条件){
循环体代码
}
var i = 0;
while (i < 10) {
console.log(i);
i++;
}
10.三元运算符
# 在python中 res = '吃饭' if 18 > 10 else '喝水'
# 在js中
res = 18 > 10 ? '吃饭':'喝水'
var a = 1;
var b = 2;
var c = a > b ? a : b //这里的三元运算顺序是先写判断条件a>b 再写条件成立返回的值为a,条件不成立返回的值为b
三元运算可以嵌套使用
var a=10,b=20;var x=a>b ?a:(b=="20")?a:b;x10
11.函数
# 在python中 def 函数名(参数1,参数2,...):
'''函数注释'''
函数体代码
return 返回值
# 在js中
function 函数名(参数1,参数2,...){
// 函数注释
函数体代码
return 返回值
}
"""
arguments参数 可以获取传入的所有数据
也支持return和匿名函数
function add(a,b){
console.log(a+b);
console.log(arguments.length);
console.log(arguments[0]);//arguments相当于将出传入的参数全部包含,这里取得就是第一个元素1
}
add(1,2)
输出:
3
2
1
"""
# 箭头函数
var f = v => v;
等同于下:
var f = function(v){
return v;
}
# 练习:
var city = "BeiJing";
function f() {
var city = "ShangHai";
function inner(){
var city = "ShenZhen";
console.log(city);
}
inner();
}
f(); //输出结果是?
ShenZhen
var city = "BeiJing";
function Bar() {
console.log(city);
}
function f() {
var city = "ShangHai";
return Bar;
}
var ret = f();
ret(); // 打印结果是?
BeiJing
var city = "BeiJing";
function f(){
var city = "ShangHai";
function inner(){
console.log(city);
}
return inner;
}
var ret = f();
ret();
ShangHai
12.自定义对象
# 相当于python中的字典类型 方式1: var d = {'name':'jason','age':18}
方式2: var d = Object({'name':'jason','age':18})
取值时直接用点. 即可 如图
"""
在python中 实现字典取值用点方法
class MyDict(dict):
def __getattr__(self, item):
return self.get(item)
def __setattr__(self, key, value):
self[key] = value
res = MyDict(name='jason',age=18)
print(res.name)
print(res.age)
res.xxx = 123
print(res.xxx)
print(res)
"""
13.内置对象
# 如果需要使用内置对象 需要关键字 new在python中
import date
date()
在js中
new date()
# 创建Date对象
//方法1:不指定参数
var d1 = new Date();
console.log(d1.toLocaleString());
//方法2:参数为日期字符串
var d2 = new Date("2004/3/20 11:12");
console.log(d2.toLocaleString());
var d3 = new Date("04/03/20 11:12");
console.log(d3.toLocaleString());
//方法3:参数为毫秒数
var d3 = new Date(5000);
console.log(d3.toLocaleString());
console.log(d3.toUTCString());
//方法4:参数为年月日小时分钟秒毫秒
var d4 = new Date(2004,2,20,11,12,0,300);
console.log(d4.toLocaleString()); //毫秒并不直接显示
# Date对象的方法:
var d = new Date();
//getDate() 获取日
//getDay () 获取星期
//getMonth () 获取月(0-11)
//getFullYear () 获取完整年份
//getYear () 获取年
//getHours () 获取小时
//getMinutes () 获取分钟
//getSeconds () 获取秒
//getMilliseconds () 获取毫秒
//getTime () 返回累计毫秒数(从1970/1/1午夜)
# 练习:编写代码,将当前日期按“2017-12-27 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() # 反序列化
"""
如果当前js中有一个布尔值true需要基于网络发送给python程序并且让python转换成布尔值 如何操作?
1.在js中使用JSON.stringify()序列化成json格式字符串
2.基于网络发送给python程序(自动编码)
3.python接收 解码并反序列化
"""
############################################################
# RegExp对象
# 1.定义正则表达式两种方式
var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9]{5,11}");
var reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/;
// 正则校验数据
reg1.test('jason666')
reg2.test('jason666')
true
# /*第一个注意事项,正则表达式中不能有空格*/
# 2.全局匹配
正则表达式的最后不加g则表示匹配成功就结束 加g表示全局匹配
var s1 = 'egondsb dsb dsb';
s1.match(/s/)
s1.match(/s/g)
var reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/g
reg2.test('egondsb');
reg2.test('egondsb');
reg2.lastIndex;
# /*第二个注意事项,全局匹配时有一个lastIndex属性*/
# 3.校验时不传参数 相当于传了undefined
var reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/
reg2.test();
reg2.test(undefined);
var reg3 = /undefined/;
reg3.test();
RegExp
14.BOM与DOM操作
# BOM(Browser Object Model)是指浏览器对象模型,它使 JavaScript 有能力与浏览器进行“对话”>>>:使用js操作浏览器# DOM (Document Object Model)是指文档对象模型,通过它,可以访问HTML文档的所有元素>>>:使用js操作前端页面
15.BOM操作
# 1.window对象 所有浏览器都支持 window 对象。它表示浏览器窗口 window.innerHeight - 浏览器窗口的内部高度
window.innerWidth - 浏览器窗口的内部宽度
window.open() - 打开新窗口
window.close() - 关闭当前窗口
# 2.history对象 window.history 对象包含浏览器的历史
window.history.forward() - 前进一页
window.history.back() - 后退一页
# 3.location对象
window.location - 对象用于获得当前页面的地址 (URL),并把浏览器重定向到新的页面
window.location.href - 获取当前页面URL
window.location.href="URL" - 跳转到指定页面
window.location.reload() - 重新加载页面
# 4.弹出框
警告框:警告框经常用于确保用户可以得到某些信息
alert("你看到了吗?");
确认框:确认框用于使用户可以验证或者接受某些信息
confirm("你确定吗?")
提示框:提示框经常用于提示用户在进入页面前输入某个值
prompt("请在下方输入","你的答案")
# 5.计时相关
通过使用 JavaScript,我们可以在一定时间间隔之后来执行代码,而不是在函数被调用后立即执行 - 我们称之为计时事件
setTimeout()
var t=setTimeout("JS语句",毫秒)
clearTimeout()
// 在指定时间之后执行一次相应函数
var timer = setTimeout(function(){alert(123);}, 3000)
// 取消setTimeout设置
clearTimeout(timer);
setInterval()
setInterval("JS语句",时间间隔)
clearInterval()
clearInterval() 方法可取消由 setInterval() 设置的 timeout
clearInterval() 方法的参数必须是由 setInterval() 返回的 ID 值
// 每隔一段时间就执行一次相应函数
var timer = setInterval(function(){console.log(123);}, 3000)
// 取消setInterval设置
clearInterval(timer);
以上是 前端语言之js(对比python快速入门) 的全部内容, 来源链接: utcz.com/z/387204.html