JS概述

  • js是脚本语言
  • js是轻量级语言
  • js是可插入html页面的编程代码
  • js插入html后,可由所有的现代浏览器执行
  • js很容易学习

    js变量声明

  1. 不能使用关键字
  2. 只能使用unicode字符,数字,_,$,组成;不能以数字开头
  3. 区分大小写
  4. 变量声明可以使用的关键字let,var,const(常量)

    运算符

    基本与java一样
    特例:除(/) 5/2=2.5 ; 5/3=1.666666666667
    0.2+0.1 == 0.3 -> false = 0.3000000000000004

== :只要求内容相等,不要求数据类型相同。
===:不仅要求内容相同,还要求数据类型相同。

获取元素

document.querySelector(css选择器).value //获取一个元素值
alert(); //向页面弹出提示框
innerHTML //操作页面某个元素的内容,可以获取,也可以赋值
document.write() //向页面中写内容

javascript的引入方式

第一种

内嵌式:将js代码直接嵌入html页面中。这种方式的js代码只对本页面有效。
<script></script>

第二种

外链式:独立创建一个.js后缀的文件,并在html文件中导入。
<script src="文件相对项目的地址" type="text/javascript" charset="UTF-8"></script>
**

js中正则匹配方式

  • 使用string对象中的match()

match() - 从字符串中检索出**一个或多个**正则表达式的匹配对象,返回匹配到的值的列表(数组)

  1. var s = "123123456af3";
  2. var regsrr = s.match(/\d+?/g); //[1,2,3,4...3]
  3. var regsrr = s.match(/\d+/g); //[123123456,3] ?匹配一个或0个
  4. var regsrr = s.match("123"); //[123] 只有一个值
  5. var regsrr = s.match(/\d+?/); //[1] g的作用是反复匹配,没有g匹配到一个就结束了
  • 使用正则对象中的test()

test() - 检查一个字符串是否匹配某个模式(RegExpObject.text(String)),返回true和false

  1. var reg = /\d+/g
  2. reg.test("abcd1") //true

js中的函数

函数:实现一定功能的代码块,类似Java中的方法。
三种定义格式:

  1. function fun1(参数1,参数2){函数体} //通过创建函数名来定义函数
  2. var fun2 = new Function(“参数1”,”参数2”…,”函数体”); //通过创建变量来定义函数
  3. function(){函数体} //匿名函数

说明:
1,在调用时,可以为没有参数的函数传递参数;但如果没有传递参数给有参数的函数时,默认参数为undefined
2,如果有参数,参数不能使用var关键字
3,js中没有重载,只要名字重复就会覆盖前面的函数
4,在JS中设计函数的时候,任何一个函数内部都有内置的参数,这个参数用来接收传递进来的所有数据。
这个内置的参数arguments。它会把传递的所有参数全部接收。这个arguments是一个数组。

querySelector和getElementById的区别

  1. 前者效率高于后者
  2. 前者为静态获取节点,后者为动态获取节点
    1. <body>
    2. <ul id="box">
    3. <li class="a">测试1</li>
    4. <li class="a">测试2</li>
    5. <li class="a">测试3</li>
    6. </ul>
    7. </body>
    8. <script type="text/javascript">
    9. //获取到ul,为了之后动态的添加li
    10. var ul = document.getElementById('box');
    11. //获取到现有ul里面的li
    12. var list = ul.getElementsByTagName('li');
    13. for(var i =0;i<list.length;i++){
    14. ul.appendChild(document.createElement('li')); //动态追加li
    15. }
    16. </script>
    这个代码会出现无限循环问题。因为getElementById()是动态获取节点,所以每次添加一个元素的时候,文档都随着变化而改变。当ul添加li,ul的长度就+1了。
  • getElement(s)Byxxxx获取的是动态集合,它总会随着dom结构的变化而变化。
  • querySelectot()获取的是静态集合,它不会因为dom结构变化而变化。