首页 > 其他分享 >JS

JS

时间:2022-08-25 20:33:36浏览次数:119  
标签:function console 函数 对象 JS var

  • JS数据类型之布尔型(boolean)
    • null和undefined

  • JS数据类型之对象object

    • 对象之数组

  • JS数据类型之自定义对象

  • JS之运算符

  • JS之流程控制

    • 分支结构

    • 循环结构

  • JS之函数

    • function函数

    • 匿名函数

    • 箭头函数

    • 函数中的arguments参数

  • JS函数的全局变量和局部变量

    • JS闭包函数

  • JS内置对象

    • Date日期对象

    • JSON序列化对象

    • RegExp对象(正则对象)

  • BOM与DOM操作

    • BOM与window对象

    • 一些常用的window方法

    • window的子对象

  • DOM操作

    • DOM树

    • 节点操作

 


JS数据类型之布尔型(boolean)

  1.在js中,布尔型主要有两种:  true   false

  2.和python的布尔型区别,js的布尔型都是小写

  3.空字符串,0,null,undefined,NaN都是false

null和undefined

  1.null表示值为空,一般在需要指定一个值或者清空一个变量时才会使用(name = null)

  null补充:null可以手动清空一个变量的值,使得该变量变为object类型,值为null

  2.undefined表示声明了一个变量但是没有给它赋值,那么这个变量的默认值时undefined,   还有如果函数没有明确的返回值,那么返回的值也是undefined。


JS数据类型之对象object

  1. 和python一样,在JS中,也是本着一切皆对象的原则

  2. js允许自定义对象

  3. js提供多个内建对象: String,Data,Array等。

  4. 对象指带有属性和方法的特殊数据类型

对象之数组

  1. js中的数组是使用单独的变量名来储存一系列的值

    var l1 = [1,2,'123'];

     console.log(l1[1]);   //  输出  "2"

  2. js中的数组相当于python中的列表

数组的一些常用方法

方法 说明
.length 数组的大小
.push(ele) 尾部追加元素
.pop() 获取尾部的元素 并且删除
.unshift(ele) 头部插入元素
.shift() 头部移除元素
.slice(start, end) 切片取值
.reverse() 反转
.join(seq) 将数组元素连接成字符串
.concat(val, ...) 连接数组  a.concat(b/或者其他值123)
.sort() 排序
.forEach() 将数组的每个元素传递给回调函数
.splice() 删除元素,并向数组添加新元素。
.map() 返回一个数组元素调用函数处理后的值的新数组

 

 


JS数据类型之自定义对象

  1. js中的自定义对象相当于python中的字典

  2.定义方式:

    (1)   let d1 = {'name' : 'jason', 'pwd' : '123'}

    (2)    let d2 = new Object()

  3. 自定义对象操作数据值的方式: 句点符

注: 在python中如果让字典也可以通过句点符的方式需要修改类属性


JS之运算符

var x=20;
var res1=x++;  
var res2=++x;

console.log(res2)   //22

res1=x++/x--

先将x本来就有的值先给res1,然后x再自增/自减
res1=++x/--x x先自增或者自减,然后再将结果赋值给res1
==

弱等于(自动转换成相同数据类型)

eg:123 == ‘123’ 结果是true

===

强等于(不自动转换)

用于数值的比较

&&  等价于python中的and
||   等价于python中的or
等价于python中的not
=  
+=  
-=  
*=  
/=  

 


JS之流程控制

和python一样,js也有着自己的流程控制

分支结构

  if   else

1.单if分支
    	if(条件){条件成立之后执行的代码}
 	2.if...else分支
    	if(条件){
            条件成立之后执行的代码
        }else{
            条件不成立之后执行的代码
        }
  	3.if...elif...else分支
    	if(条件1){
            条件1成立之后执行的代码
        }else if(条件2){
            条件1不成立条件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(let i=1;i<101;i++){
        console.log(i)
    }
	课堂小练习
    	打印数组内所有的数据值
 			l1 = [11, 22, 33, 44, 55, 66, 77, 88, 99, 'jason']
      	  	for(let i=0;i<l1.length;i++){
                console.log(l1[i])
            }

  while 循环

while(条件){
        循环体代码
    }

JS之函数

function函数

  1. js函数的语法结构

function 函数名(形参){
    函数体代码
    return 返回值
}
函数名(实参);  //调用函数

  2. js中函数中的参数不需要一一对应,如果想要限制参数的个数需要使用内置关键字arguments.length做一个长度的判断

function func(a, b){
    if(arguments.length===2){
       console.log(a, b) 
    }else{
       console.log('去你妹的 参数都没给我!!!')
    }
    
}

匿名函数

  在python中,匿名函数使用的是lambda,使用lambda的时候还需要用一个变量名去接收,同样的,在js中也是一样

var sum = function(a, b){
  return a + b;
}
sum(1, 2);

箭头函数

  1. ES6中允许使用“箭头”(=>)定义函数。

  2. 语法:var f = v => v;

var f = v => v;
// 等同于
var f = function(v){
  return v;
}

  3. 如果箭头函数不需要参数或需要多个参数,就是用圆括号代表参数部分

var f = () => 5;
// 等同于
var f = function(){return 5};

var sum = (num1, num2) => num1 + num2;
// 等同于
var sum = function(num1, num2){
  return num1 + num2;  //这里的return只能返回一个值,如果想返回多个值需要自己手动给他们包一个数组或对象中
}

函数中的arguments参数

function add(a,b){
  console.log(a+b);
  console.log(arguments.length);
 console.log(arguments[0]);//arguments相当于将出传入的参数全部包含,这里取得就是第一个元素1
}

add(1,2)

输出:
3
2
1

JS函数的全局变量和局部变量

局部变量

在JavaScript函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它(该变量的作用域是函数内部)。只要函数运行完毕,本地变量就会被删除。

全局变量:

在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。

变量生存周期:

JavaScript变量的生命期从它们被声明的时间开始。

局部变量会在函数运行以后被删除。

全局变量会在页面关闭后被删除。

作用域

首先在函数内部查找变量,找不到则到外层函数查找,逐步找到最外层。与python作用域关系查找一模一样!

全局变量和局部变量习题代码
 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

JS闭包函数

  1. 定义在函数内部的函数
     2. 内部函数使用了外部函数名称空间中的名字
ps:只有符合上述两个特征的函数才能称之为闭包函数

var city = "BeiJing";
function f(){
    var city = "ShangHai";
    function inner(){
        console.log(city);
    }
    return inner;
}
var ret = f();
ret();

JS内置对象

  1. 类似于python中的内置函数或内置模块

  2. 创建对象的固定语法  var 变量名 = 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序列化对象

  1. 回顾python序列化
          import json
            json.dumps()
          json.loads()

  2. JSON字符串转换成对象

    JSON.parse();

  3. 对象转换成JSON字符串

    JSON.stringify();

var str1 = '{"name": "Alex", "age": 18}';
var obj1 = {"name": "Alex", "age": 18};
// JSON字符串转换成对象
var obj = JSON.parse(str1); 
// 对象转换成JSON字符串
var str = JSON.stringify(obj1);

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}$/;

  2. 正则校验数据

reg1.test('jason666')
reg2.test('jason666')

注意:    正则表达式中不能有空格

  3. 全局匹配

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属性


BOM与DOM操作

我们要知道,JS分为  ECMAScript  DOM   BOM

  1. ECMAScript 描述了JavaScript语言本身的相关内容

   2. BOM(Browser Object Model)是指浏览器对象模型,它使JS有能力与浏览器进行“对话”

   3. DOM(Document Object Model)是指文档对象模型,通过DOM我们可以访问HTML文档中的所有元素

 BOM与window对象

  1. Window对象是客户端JavaScript最高层对象之一

   2. 在调用window对象的方法和属性时,可以省略对象的引用。例如:window.document.write()可以简写成:document.write()

   3. 所有的浏览器都支持window对象,他表示浏览器窗口

   4. HTML DOM 的 document 也是 window 对象的属性之一

 一些常用的window方法

window.innerHeight 浏览器窗口的内部高度
window.innerWidth 浏览器窗口的内部宽度
window.open() 打开新窗口
window.close() 关闭当前窗口

window的子对象

1.navigator对象

navigator.appName

Web浏览器全称
navigator.appVersion Web浏览器厂商和版本的详细字符串
navigator.userAgent 客户端绝大部分信息
navigator.platform  浏览器运行所在的操作系统

2.screen对象

  • screen.availWidth - 可用的屏幕宽度
  • screen.availHeight - 可用的屏幕高度

3.history对象

history.forward()  // 前进一页
history.back()  // 后退一页

4.location对象

  window.location 对象用于获得当前页面的地址 (URL),并把浏览器重定向到新的页面。

location.href  获取URL
location.href="URL" // 跳转到指定页面
location.reload() 重新加载页面

5.警告框

  当警告框出现后,用户需要点击确定按钮才能继续进行操作

  alert("我是弹出框");

6. 确认框

  用户点击确认  返回值为 true。

  用户点击取消  返回值为 false

  confirm("你确定我是确认框吗");

7.提示框

  用户点击确认,返回值为输入的值。

  用户点击取消,那么返回值为 null

  prompt("提示你要信确认框的话");


定时器相关操作(重要)

  通过使用JS, 我们可以在一定时间之后来执行代码,不让函数被调用后立即执行。这就叫做  计时事件

 

setTimeout()

var t=setTimeout("JS语句",毫秒)

值被储存在名为 t 的变量中

第二个参数指示从当前起多少毫秒后执行第一个参数(1000 毫秒等于一秒)

clearTimeout()

clearTimeout(setTimeout_variable)

// 在指定时间之后执行一次相应函数
var timer = setTimeout(function(){alert(123);}, 3000)
// 取消setTimeout设置
clearTimeout(timer);
setInterval()

setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。

setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。

语法:

      setInterval("JS语句",时间间隔)

返回值

一个可以传递给 Window.clearInterval() 从而取消对 code 的周期性执行的值。

clearInterval()

clearInterval() 方法可取消由 setInterval() 设置的 timeout。

clearInterval() 方法的参数必须是由 setInterval() 返回的 ID 值。

语法:

      clearInterval(setinterval返回的ID值)

// 每隔一段时间就执行一次相应函数
var timer = setInterval(function(){console.log(123);}, 3000)
// 取消setInterval设置
clearInterval(timer);
定时器相关代码
 定时器相关操作(重要)
   		function func1(){
        	alert('终于要干饭了')
        }
       let t = setTimeout(func1,3000)  // 3秒中之后自动执行func1函数
       clearTimeout(t)  // 取消上面的定时任务
        
       
    	  var s1 = null
        function showMsg() {
            function func1(){
                alert('终于要干饭了')
            }
            s1 = setInterval(func1, 3000)
        }
        function clearMission(){
            clearInterval(s1)
        }
        setTimeout(clearMission, 9000)
        showMsg()

DOM操作

DOM树

  1. DOM是一套对文档的内容进行抽象和概念化的方法

  2. 当页面被加载时,浏览器会创建页面的文档对象模型

  3. HTML DOM模型被构造为对象的树

DOM标准规定HTML文档中的每个成分都是一个节点(node):

  • 文档节点(document对象):代表整个文档
  • 元素节点(element 对象):代表一个元素(标签)
  • 文本节点(text对象):代表元素(标签)中的文本
  • 属性节点(attribute对象):代表一个属性,元素(标签)才有属性
  • 注释是注释节点(comment对象) 

JavaScript 可以通过DOM创建动态的 HTML:

  • JavaScript 能够改变页面中的所有 HTML 元素
  • JavaScript 能够改变页面中的所有 HTML 属性
  • JavaScript 能够改变页面中的所有 CSS 样式
  • JavaScript 能够对页面中的所有事件做出反应

  4. JS操作html和css操作html是一致的   都是先学习如何查找标签

  直接查找

  4.1 根据id值查找标签,结果直接是标签对象本身

    document.getElementById()

  4.2 根据class值查找标签  结果时数组类型

    document.getElementByClassName()

  4.3 根据标签名查找标签   结果时数组类型

    document.getElementsByTagName()

  注意:

涉及到DOM操作的JS代码应该放在文档的哪个位置(一般放在HTML  body标签内的最下面)

  间接查找

  4.4 间接查找是基于当前标签进行查找

parentElement            父节点标签元素
children                 所有子标签
firstElementChild        第一个子标签元素
lastElementChild         最后一个子标签元素
nextElementSibling       下一个兄弟标签元素
previousElementSibling   上一个兄弟标签元素

节点操作

基本流程

let XXXEle = document.createElement('标签名')
       XXXEle.id = 'id值'
    	XXXEle.innerText = '内部文本'
       divEle.append(XXXEle)
    	ps:动态创建 临时有效 非永久

  1.创建节点

    语法:createElement(标签名)

    let divEle = document.createElement("标签名");

添加节点

追加一个子节点(作为最后的子节点)

somenode.appendChild(newnode);

把增加的节点放到某个节点的前边。

somenode.insertBefore(newnode,某个节点);

删除节点

获得要删除的元素,通过父元素调用该方法删除。

somenode.removeChild(要删除的节点)

替换节点 somenode.replaceChild(newnode, 某个节点);
   

属性节点

  获取文本节点的值:

var divEle = document.getElementById("d1")
divEle.innerText
divEle.innerHTML

  设置文本节点的值:

var divEle = document.getElementById("d1")
divEle.innerText="1"
divEle.innerHTML="<p>2</p>"

XXXEle.属性               只能是默认属性  

XXXEle.setAttribute()  默认属性、自定义属性

 

标签:function,console,函数,对象,JS,var
From: https://www.cnblogs.com/scx-xiaochun/p/16624767.html

相关文章

  • js数组对象的遍历
    //数组循环的方法vararr=[{code:10},{value:100},{name:'大乔'},{age:'18'}];//for----offor(letitemofarr){console.log('for--of',......
  • JSON Schema
    .net项目使用JSONSchema 最近公司要做配置项的改造,要把appsettings.json的内容放到数据库,经过分析还是用json的方式存储最为方便,项目改动性最小,这就牵扯到一个问题......
  • js操作
    一、数据类型之布尔值#js中布尔值的关键字为boolean在js中布尔值的写法为:true,falsejs中不用大写而在python中为;True,False首字母要大写python......
  • 实现格式化 JSON 字符串并有代码高亮的例子
    字符串转换HTMLfunctionformatJson(json){letregexp=/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)......
  • Json
    1.概述概念:JavaScriptObjectNotation(JavaScript对象表示法)。JSON和JS对象的格式一样,它使用JS语法,只不过JSON字符串中的属性名必须加双引号。json现在多用于存储和......
  • jssip3.9.1的demo,webphone网页电话
    用的目前最新的3.9.1版本,全版本在这里:https://jssip.net/download/releases/https://github.com/versatica/JsSIP 代码:<!DOCTYPEhtml><htmllang="en"><head......
  • 6. json--注释
    1.前言JSON是一种纯粹的数据交换格式,其简单、灵活的特性使得JSON适合被用于各种不同的场景,例如在配置文件中、在接口返回的数据中都会用到JSON格式。然而JSON却有......
  • 原生js解决ios手机input输入框弹出覆盖问题
    背景:软键盘弹起挡住input框软键盘弹起页面布局乱掉安卓手机+界面父级组件使用了overflow:hidden导致键盘弹出(页面本质上变小了)仍然不可滚动解决思路:父级别不要使用ove......
  • JS监听了select的onchange事件
    <selectid="sel_YJCL"runat="server"></select><inputtype="button"id="btn_YJCL"runat="server"style="display:none"onserverclick="dp_YJCL_SelectedIndexCh......
  • python json用法 dump和dumps的区别;loads()和load()的区别
    json常用方法方法作用json.dumps()将python对象编码成Json字符串json.loads()将Json字符串解码成python对象json.dump()将python中的对象转化成json储存到......