1.javascript简介
JavaScript是一门编程语言,但是和java无关
JavaScript 是脚本语言
JavaScript 是一种轻量级的编程语言。
JavaScript 是可插入 HTML 页面的编程代码。
JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行。
JavaScript 很容易学习。
2.引入方式
// 注释方法 1.单行注释 // 2.多行注释 /**/ / 引入方式 / 1.script标签内部直接书写js代码 2.引入外部js文件 /* 结束符 js语言的结束符号是分号 但是你在编写js代码的时候如果不加分号,也不会报错 alert(123); */ # JS编写平台 1.支持代码编写的软件 2.浏览器直接充当编辑器使用
3.变量声明
在js中定义变量需要使用关键字 # 在python中 username = 'simon' # 在js中需要使用关键字(var let) var username = 'simon' let username = 'xc' 定义常量 const pi = 3.14 """ let是ecs6新语法,使用它可以区分全局变量和局部变量的问题 """ var i = 10; for (var i=0;i<5;i++){ console.log(i) } i 5 var j = 10; for(let j=0;j<5;j++){ console.log(i) } j 10
4.JS的数据类型
数值类型(包含了我们之前在python中学习的整型和浮点型) 字符类型 布尔值类型 null与undefined 自定义对象([],{}) 内置对象 # 1.如何查看数据类型 typeof # 1.数值类型中的NaN 在数据类型转换的过程中,如果转换的对象无法变成数字就会返回NaN # 2.字符类型 三种定义字符串的方式 var name = 'simon' var name = "simon" var name = `simon666` """ 第三种也叫 模板字符串 var username = 'simon'; var age = 18; var res = ` my name is ${username} and my age is ${age} ` res " my name is simon and my age is 18 " """ # 在js中字符串的拼接推荐使用加号 # 3.布尔值 在js中布尔值全部都是小写而python中是首字母大写 true false # ""(空字符串)、0、null、undefined、NaN都是false。 # 4.null与undefined null表示值为空 undefined只定义了没有给过值 # 5.对象 # 5.1 数组 var l = [1,2,3,4,5] # js中的数组表现形式上跟python列表很像 var l1 = [111,222,333,444,555,666] l1.forEach(function(data,index){ console.log(date,index) }) # 第一个是元素本身 第二个是索引值 第三个是元素来自于谁 l1.forEach(function(data,index,arr){ console.log(data,index,arr) }) 1.splice(1,2) # 第一个起始位置 第二个是删除的元素个数 (2) [222, 333] l1 (4) [111, 444, 555, 666] l1.splice(0,3,666) # 第三个参数是要添加的元素 # 5.2自定义对象 # 第一种定义方式 var obj = {'username':'simon',"password":123} undefined typeof obj "object" obj['username'] "simon" obj.username "simon" # 第二种定义方式 var obj1 = new Object() undefined obj1 {} obj1.username = 'simon' "simon" obj1.password = 123 123 obj1 {username: "simon", password: 123}
5.运算符
var x=10; var res1=x++; var res2=++x; res1; 10 res2; 12 // 比较运算符 # 弱等于 5 == '5' # js会自动转换成相同的数据类型再做比较 # 强等于 5 === '5' # 不让js自动帮你转换 // 逻辑运算符 在python中 在js中 and && or || not !
6.流程控制
""" 固定句式 关键字(条件){子代码} """ var a = 10; if (a > 5){ console.log("yes"); }else { console.log("no"); } var a = 10; if (a > 5){ console.log("a > 5"); }else if (a < 5) { console.log("a < 5"); }else { console.log("a = 5"); } # 星期几是从0-6 0表示星期日 var day = new Date().getDay(); switch (day) { case 0: console.log("Sunday"); break; # 如果不写就会一致往后执行 case 1: console.log("Monday"); break; default: # 没有匹配项的时候走的 console.log("...") } b = 10 if b > 5: print('yes') else: print('no')
7.循环结构
""" for(条件){ 子代码 } """ var l = [111,222,333,444,555,666,777] for(let i=0;i<l.length;i++){ console.log(l[i]) } """ while(条件){ 子代码 } """ var i = 0; while (i < 10) { console.log(i); i++; } """ 三元运算 在python中 x = 10 res = '哈哈哈' if x > 20 else '嘿嘿嘿' print(res) 在js中 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; x 10 """
8.函数
# 在python定义函数 def index(x,y): return x,y # 在js中 """ function(参数){函数体代码} """ function(x,y){ return x,y } # arguments关键字 可以获取到调用函数的时候所有的实际参数 是一个数组 # 箭头函数 箭头的左边是参数右边是返回值 var f = function(v){ return v; } // 等同于 var f = v => v; var sum = (num1, num2) => num1 + num2; // 等同于 var sum = function(num1, num2){ return num1 + num2; //这里的return只能返回一个值,如果想返回多个值需要自己手动给他们包一个数组或对象中 }
9.内置对象
var d1 = new Date(); console.log(d1.toLocaleString()); var d = new Date(); //getDate() 获取日 //getDay () 获取星期 //getMonth () 获取月(0-11) //getFullYear () 获取完整年份 //getYear () 获取年 //getHours () 获取小时 //getMinutes () 获取分钟 //getSeconds () 获取秒 //getMilliseconds () 获取毫秒 //getTime () 返回累计毫秒数(从1970/1/1午夜) JSON对象 # 在python中 import json json.dumps() # 序列化 json.loads() # 反序列化 # 在js中 JSON.stringify() # 序列化 JSON.parse() # 反序列化 RegExp对象 # 在js中定义正则表达式有两种方式 // 定义正则表达式两种方式 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') // 全局模式下 var reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/g undefined var info = 'egondsb' undefined reg2.test(info) true reg2.test(info) false reg2.test() # 不给默认匹配的是undefined true var r = /undefined/ undefined r.test() true r.test('undefined') true typeof undefined "undefined"
10.BOM操作
浏览器对象模型 window.open('https://www.baidu.com','','height=400px,width=400px') window.open('https://www.baidu.com','','height=400px,width=400px,top=200px,left=200px') window.close() # 关闭当前界面 window.history.forward() // 前进一页 window.history.back() // 后退一页 window.location.href 获取URL window.location.href="URL" // 跳转到指定页面 alert(123) confirm('你确定吗') prompt('写点什么吧') 计时器相关 // 3秒之后再执行函数 // t = setTimeout(f1,3000); // 清除定时器 // clearTimeout(t) // 每个3秒触发一次 res = setInterval(f1,3000); // 清除定时器 res = clearInterval(res)
11.DOM操作
# 查看标签 document.getElementById('d1') # 直接返回标签对象 document.getElementsByClassName('c1') # 返回的是数组 document.getElementsByTagName('p') # 返回的是数组 # 简介查找 parentElement 父节点标签元素 children 所有子标签 firstElementChild 第一个子标签元素 lastElementChild 最后一个子标签元素 nextElementSibling 下一个兄弟标签元素 previousElementSibling 上一个兄弟标签元素 var aEle = document.createElement('a'); aEle.href = 'https://www.baidu.com' aEle.setAttribute('username','jason') <a href="https://www.baidu.com" username="jason"></a> aEle.innerText = '百度' dEle = document.getElementById('d1') dEle.appendChild(aEle) """ 在给标签命名的时候我们习惯使用 xxxEle的方式 divEle pEle aEle """ divEle.innerHTML " <span class="c2">sss</span> <p class="c1">ppp</p> " divEle.innerHTML = 'hahahahahah' "hahahahahah" divEle.innerText = '<h1>111</h1>' # 无法识别HTML并自动转换 "<h1>111</h1>" divEle.innerHTML = '<h1>111</h1>' # 可以识别并转换 "<h1>111</h1>" # 获取input里面的用户数据 inputEle = document.getElementById('d1') inputEle.value "weeqewqewqewqewewqeqw" inputEle.value = 'jason' "jason" var input1Ele = document.getElementById('d2') undefined d2.value "C:fakepath eadme.txt" d2.files FileList {0: File(69), length: 1} d2.files[0] # 文件对象 """ with open() as f: pass """
12.类属性操作
divEle.classList DOMTokenList(3) ["c1", "bg-red", "bg-green", value: "c1 bg-red bg-green"] divEle.classList.add('ccc') undefined divEle.classList.remove('bg-green') undefined divEle.classList.contains('ccc') true divEle.classList.toggle('bg-green') # 有则删除无则添加 true divEle.classList.toggle('bg-green') false
13.CSS样式操作
js操作css样式统一语法 """ 标签对象.style.属性 """ obj.style.backgroundColor="red" obj.style.margin obj.style.width obj.style.left obj.style.position
14.事件
给不同的标签绑定不同的事件:点击不同的标签可以触发不同的动作 # js绑定事件的方式 """ 标签对象.事件名 = function(){ 事件对应的具体步骤 } """ # 两种方式 <button onclick="f1()">按钮1</button> <button id="d1">按钮2</button> <script> function f1() { alert('按钮一被点击了') } var bEle = document.getElementById('d1'); bEle.onclick = function () { alert('按钮2被点击了') } </script>