回顾js

JS

复习一下js,以备后用

数据类型
  • number:js不区分小数和整数,说一些特殊的

    1.23e3//科学计数法
    NaN//不是一个数字
    Infinity//表示无限大
    
  • 字符串、布尔值

    字符串

    \u4e2d  \u#### unicode字符(前者是汉字中,后者表示格式)
    \x41  AscII字符(前面表示A)
    

    多行字符串用``包裹

    模板字符串

    let name = "yyh";
    let msg = `Hi,${name}`;
    

    js的字符串不可变(通过下标的方式改变不了)

    大小写转换:toUpperCase(),toLowerCase()

    substring与Java一样

    布尔值

    下面6种值转化为布尔值时为false,其他转化都为true

    1、undefined(未定义,找不到值时出现)

    2、null(代表空值)

    3、false(布尔值的false,字符串"false"布尔值为true)

    4、0(数字0,字符串"0"布尔值为true)

    5、NaN(无法计算结果时出现,表示"非数值";但是typeof NaN===“number”)

    6、""(双引号)或’’(单引号) (空字符串,中间有空格也是true

    数据类型转为true的值转为false的值
    Booleantruefalse
    String任何非空字符串‘’(空字符串)
    Number任何非零数字值(包括无穷大)0和NaN
    Object任何对象null
    Undefinedn/aundefined
  • 比较运算符

    == 等于(类型不一样,值一样,也会判断true)

    === 绝对等于(类型一样,值一样,结果才true)

    建议使用后者

    ps:NaN===NaN结果为falseNaN不等于任何数,包括自己,只能用isNaN(NaN)判断为true

  • 浮点数问题

    console.log((1/3) === (1-2/3));
    

    上面的返回false。尽量避免使用浮点数进行运算,存在精度问题。

    Math.abs((1/3) - (1-2/3)) < 0.0000001
    
  • null和undefined

    空和未定义。

  • 数组

    去数组下标时,如果越界,就会undefined

    可以给arr.length赋值,如果比原来小,元素会丢失

    slice()截取数组的一部分,与substring一样

    push在最后添加值,pop从最后弹出值

    unshift在开始添加值,shift从开始弹出值

    sort排序

    reverse元素反转

    concat拼接,返回一个新的数组

    join使用特定的连接符打印数组

  • 对象

    大括号里键值对(描述属性),键可加引号也可以不加

    访问对象的属性:person.name或者person['name']。(我是服了这语言)

    使用对象不存在的属性,会是undefine

    可以使用delete动态的删除属性;直接给不存在的属性赋值就是添加

    判断属性是否在对象中'age' in person(属性得加上引号);hasOwnPropperty()更好

  • map

    es6新出的,语法跟Java很像

    set同上

严格检查模式
i = 1//这样还是全局变量,加上var就是局部变量了 es6使用let定义局部变量(建议let)

不会报错

<script>
  'use strict'
  i = 1;
</script>

上面就会报错了,'use strict'必须写在第一行。

函数
  • 函数体如果没有执行return,也有返回,会返回undefined

  • typeof获取变量类型:typeof x == 'number'

  • arguments是js的关键字,代表传入的所有参数,是一个数组(因为虽然我的函数只有一个形参但是,用的时候可以传入多个参数)

  • rest:es6新特性,获取已经定义的参数之外的所有参数,也是一个数组:

    function fun_a(a,b,...rest){
      ......
      console.log(rest);
    }
    
  • this的定义与Java一样

  • apply:是一个函数,所有函数都有(没错,函数会有函数),在js中可以控制this的指向。

    function getAge(){
      var now = new Date().getFullYear();
      return now - this.birth; //为啥此处可以有this,因为此时this指向window(window没有birth属性),直接使用只会输出NaN,所以需要apply
    }
    var yyh = {
      name: "yyh",
      birth:20,
      age: getAge
    }
    
    getAge.apply(yyh,[]); //等价于yyh.age(); 
                          //this指向了yyh对象参数为空
    
以前的js没有class,叫原型(proto)
var user = {
  name:"yyh",
  age:3,
  run:function(){
    console.log(this.name+" run....");
  }
};

var xiaoming = {
  name = "xiaoming";
};
xiaoming.__proto_ = user;


//控制台
xiaoming.run();
xiaoming.age;
现在的js有class继承(es6引入的)
class User{

  constructor(name){
    this.name = name;
  }
  hello(){
    alert("hello");
  }
}

var xiaoming = new User("xiaoming");
class XiaoUser extends User{
    
    constructor(name,grade){
      super(name);
      this.grade = grade;
    }
    myGrage(){
        alter("我是一名小学生")
    }
}

var xiaohong = new XiaoUser("xiaohong",1);
原型链

每一个对象的原型最终都会指向Object,查找属性的时候查到Object就行了。

BOM(重要)

浏览器对象模型

  • window代表浏览器窗口(应该是一个对象)

    window.alert("lalala")

    window.innerHeight

    其他属性和方法可以查

  • navigator封装了浏览器信息(是一个对象)

    navigator.userAgent:爬虫那次还记得吗

    navigator.platform:系统版本,win64

    这个对象的属性可以被人为修改,不建议使用

  • screen

    screen.width:获取屏幕宽度

  • location代表当前页面的url信息(重要)

    //属性
    host:"www.baidu.com"
    href:"https://www.baidu.com/"
    protocol:"https:"
    reload:f reload() // 刷新网页
    
    //设置新的地址
    location.assign('https://ip')
    
  • document代表当前页面

    好像就是DOM树

    document.title //网页标题
    document.getElementById("lalala") //获取节点
    document.cookie //获取网页cookie
    
  • history(就是在当前页面中可以前进后退)

    history.forward() //前进
    history.back() //后退
    
DOM(重要)

文档对象模型

网页就是一个DOM树型结构:body、div…

var lalala = document.getElementById("lalala") //获取节点

操作文本

innerText修改文本值

innerHTML解析html标签

操作css

lalala.style.fontsize=‘20px’

删除节点

var lalalaFather = lalala.parentElement;
lalalaFather.removeChild(lalala);
var children = lalalaFather.children; //获取父节点下所有子节点

用父节点删除自己

创建

省略,呵呵,以前用烂了的

表单密码md5加密
function fun_b(){//表单提交的事件onsubmit()
  var username = document.getElementById("username");
  var pwd = document.getElementById("pwd");
  var md5pwd = document.getElementById("md5-pwd");//隐藏域
  console.log(username.value);
  //md5加密密码
  //pwd.value = md5(pwd.value);//md5(pwd.value)这样应该也行
  md5pwd.value = md5(pwd.value);
  console.log(pwd.value);
  return true;//true通过提交,false阻止提交
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
大学生参加学科竞赛有着诸多好处,不仅有助于个人综合素质的提升,还能为未来职业发展奠定良好基础。以下是一些分析: 首先,学科竞赛是提高专业知识和技能水平的有效途径。通过参与竞赛,学生不仅能够深入学习相关专业知识,还能够接触到最新的科研成果和技术发展趋势。这有助于拓展学生的学科视野,使其对专业领域有更深刻的理解。在竞赛过程中,学生通常需要解决实际问题,这锻炼了他们独立思考和解决问题的能力。 其次,学科竞赛培养了学生的团队合作精神。许多竞赛项目需要团队协作来完成,这促使学生学会有效地与他人合作、协调分工。在团队合作中,学生们能够学到如何有效沟通、共同制定目标和分工合作,这对于日后进入职场具有重要意义。 此外,学科竞赛是提高学生综合能力的一种途径。竞赛项目通常会涉及到理论知识、实际操作和创新思维等多个方面,要求参赛者具备全面的素质。在竞赛过程中,学生不仅需要展现自己的专业知识,还需要具备创新意识和解决问题的能力。这种全面的综合能力培养对于未来从事各类职业都具有积极作用。 此外,学科竞赛可以为学生提供展示自我、树立信心的机会。通过比赛的舞台,学生有机会展现自己在专业领域的优势,得到他人的认可和赞誉。这对于培养学生的自信心和自我价值感非常重要,有助于他们更加积极主动地投入学习和未来的职业生涯。 最后,学科竞赛对于个人职业发展具有积极的助推作用。在竞赛中脱颖而出的学生通常能够引起企业、研究机构等用人单位的关注。获得竞赛奖项不仅可以作为个人履历的亮点,还可以为进入理想的工作岗位提供有力的支持。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值