今天主要是学习了JavaScript的一些基础语法,但是今天没有将语法展示的结果截图显示,如果想看效果,可以看一下上篇博客的一些基本操作,自行到浏览器打印看输出结果。今天主要是把学习的代码分享出来,把基本的语法吃透理解。

1.字符串

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6.  
  7. <script>
  8. 'use strict'
  9. console.log('a');
  10. console.log("a");
  11. //模板字符
  12. // var msg = `
  13. // hello
  14. // world
  15. // 你好呀
  16. // 我很好`
  17. // console.log(msg)
  18. let name = "zhangsan"
  19. let age = 3;
  20. let msg = `你好呀,${name}`
  21. console.log(msg)
  22. </script>
  23. </head>
  24. <body>
  25.  
  26. </body>
  27. </html>

 

2.数组知识点

  1. 1.长度
  2. arr.length
  3. 注意:加入给arr.length赋值,数组大小就会发生变化~,如果赋值过小,元素就会丢失
  4. 2.indexOf,通过元素获得下标索引
  5. var arr = [1,2,3,45,6,34]
  6. arr.indexOf(2)
  7. 1
  8. 字符串的“1”和数字1是不同的
  9. 3.slice()截取Array的一部分,返回一个新数组,类似于String中的substring
  10. var arr = [1,2,3,45,6,34]
  11. arr.slice(2,4)
  12. [3, 45]
  13. slice()截取的部分包前不包后
  14. 4.push(),pop()
  15. push:压入到尾部
  16. arr.push("we",'dsf')
  17. arr [0, 2, 3, 45, 6, 34, empty × 3, 'we', 'dsf']
  18. pop:弹出尾部的一个元素
  19. arr.pop()
  20. arr[0, 2, 3, 45, 6, 34, empty × 3, 'we']
  21. 5.unshift(),shift()(和上面的一样)
  22. push:压入到头部
  23. pop:弹出头部的一个元素
  24. 6.排序sort()
  25. arr =["B","A","C"]
  26. arr.sort()
  27. ['A', 'B', 'C']
  28. 7.元素反转reverse()
  29. (3) ['A', 'B', 'C']
  30. arr.reverse()
  31. (3) ['C', 'B', 'A']
  32. 8.拼接concat()
  33. arr.concat([1,2,3])
  34. (6) ['C', 'B', 'A', 1, 2, 3]
  35. arr
  36. (3) ['C', 'B', 'A']
  37. 注意:concat()并没有修改数组,只是会返回一个新的数组
  38. 9.连接符join
  39. 打印拼接数组,使用特定的字符串连接
  40. (3) ['C', 'B', 'A']
  41. arr.join('-')
  42. 'C-B-A'

 

3.对象

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6.  
  7. <script>
  8. 'use strict'
  9.  
  10. //定义了一个person对象,它有四个属性!
  11. //JavaScript中的所有的键都是字符串,值是任意对象!
  12. //js中的对象,{.....}表示一个对象,键值对描述属性××××:××××,多个属性之间使用逗号隔开,最后一个属性不加逗号!
  13. /*
  14. * ①对象赋值:person.name="xiaoming"
  15. 'xiaoming'
  16. person.name
  17. 'xiaoming'
  18. * ②使用一个不存在的对象属性,不会报错!undefined:person.id
  19. undefined
  20. * ③动态的删减属性,通过delete删除对象的属性:delete person.age
  21. true
  22. person
  23. {name: 'xiaoming', email: '2743116586@qq.com', score: 87}
  24. *④动态的添加,直接给新的属性添加值即可
  25. person.id="5720182029"
  26. '5720182029'
  27. person
  28. {name: 'xiaoming', email: '2743116586@qq.com', score: 87, id: '5720182029'}
  29. * ⑤判断属性值是否在这个对象中!××××in××××!
  30. 'id'in person
  31. true
  32. 继承:
  33. 'toString' in person
  34. true
  35. * ⑥判断一个属性是否是这个对象自身拥有的hasOwnProperty()
  36. person.hasOwnProperty('toString')
  37. false
  38. person.hasOwnProperty('name')
  39. true
  40. * */
  41. var person={
  42. name:"zhangsan",
  43. age:34,
  44. email:"2743116586@qq.com",
  45. score:87
  46. }
  47. </script>
  48. </head>
  49. <body>
  50.  
  51. </body>
  52. </html>

 

4.流程控制

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6.  
  7. <script>
  8. 'use strict'
  9.  
  10. //forEach循环
  11. var age = [23,2,54,6,43,68,45,65,75,4,8,26]
  12. //函数
  13. age.forEach(function (value) {
  14. console.log(value)
  15. })
  16. //for...in打印数组的下标
  17. for (var num in age){
  18. console.log(num)
  19. }
  20. //for...of打印数组元素
  21. for (var num of age){
  22. console.log(num)
  23. }
  24. </script>
  25. </head>
  26. <body>
  27.  
  28. </body>
  29. </html>

 

5.Map和Set

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6.  
  7. <script>
  8. //ES6 Map
  9. //学生的成绩,学生的名字
  10. // var names =["tom","jack","mary"];
  11. // var scores = [100,95,87];
  12. var map = new Map([['tom',100],['jack',95],['mary',87]]);
  13. var name = map.get('tom');//通过key获得value
  14. map.set('admin',123456);//新增或者修改
  15. map.delete('tom')//删除
  16. console.log(name);
  17. var set = new Set([3,1,1,11,1,1,1,11])//set可以去重
  18. set.add(2)//新增或者修改
  19. set.delete(1)//删除
  20. console.log(set.has(3));//是否包含某个元素
  21.  
  22.  
  23. </script>
  24. </head>
  25. <body>
  26.  
  27. </body>
  28. </html>

 

6.iterator

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6.  
  7.  
  8. <script>
  9. 'use strict'
  10. //遍历map
  11. var map = new Map([['tom',100],['jack',95],['mary',87]]);
  12. for (let x of map){
  13. console.log(x)
  14. }
  15. //遍历set
  16. var set = new Set([5,6,7]);
  17. for (let x of set){
  18. console.log(x)
  19. }
  20. </script>
  21. </head>
  22. <body>
  23.  
  24. </body>
  25. </html>

结果展示

 

 

7.定义函数

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8.  
  9.  
  10. <script>
  11. /*定义方式一*/
  12. function abs(x){
  13. if (x>=0){
  14. return x;
  15. }else {
  16. return -x;
  17. }
  18. }
  19. //一旦执行到return代表函数结束,返回结果!
  20. //如果没有执行return,函数执行完也会返回结果,结果就是undefined
  21. /*定义方式二*/
  22. var bs = function(x){
  23. if (x>=0){
  24. return x;
  25. }else {
  26. return -x;
  27. }
  28. }
  29. //function(x){....}这是一个匿名函数,但是可以把结果赋值给bs,通过bs就可以调用函数!
  30. //函数的调用:① abs(-10)//10 ② abs(10)//10
  31.  
  32.  
  33.  
  34. //arguments代表传递进来的所有参数是一个数组!
  35. var sa = function (x) {
  36. console.log("x=>"+x);
  37. for (var i = 0;i<arguments.length;i++){
  38. console.log(arguments[i]);
  39. }
  40. }
  41. </script>
  42. </body>
  43. </html>

 

8.多个参数的问题

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8.  
  9.  
  10. <script>
  11. //rest参数只能写在最后面,必须用...标识。
  12. function f(a,b,...rest) {
  13. console.log("a=>"+a);
  14. console.log("b=>"+b);
  15. console.log(rest);
  16. }
  17. </script>
  18. </body>
  19. </html>

 

9.变量的作用域

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. <script>
  9. 'use strict'
  10. //①在JavaScript中,var定义变量实际是有作用域的。
  11. //假设在函数体中声明,则在函数体外不可以使用~(非要想实现的话,后面可以研究一下闭包)
  12. function qj() {
  13. var x= 1;
  14. x= x+1;
  15. }
  16. //x=x+2;//Uncaught ReferenceError: x is not defined(假设在函数体中声明,则在函数体外不可以使用~)
  17.  
  18. //②如果两个函数使用了相同的变量名,只要在函数内部,就不冲突
  19. function qj2() {
  20. var x= 'q';
  21. x= x+1;
  22. }
  23. //③内部函数可以访问外部函数成员,反之则不行
  24. function qj3() {
  25. var x= 1;
  26. function qj4() {
  27. var y= x+1;
  28. }
  29. var z = y+1;// Uncaught ReferenceError: y is not defined
  30. }
  31. //④假设在JavaScript中函数查找变量从自身函数开始~,由内向外查找,假设外部存在这个同名的函数变量,则内部函数会屏蔽外部函数变量
  32.  
  33. function qj5() {
  34. var x = 1;
  35. function qj6() {
  36. var x = 'a';
  37. console.log('inner'+x);//outer1
  38. }
  39. console.log('outer'+x);//innera
  40. qj6()
  41. }
  42. qj5()
  43. //⑤提升变量的作用域
  44. function qj7() {
  45. var x = "x"+y;
  46. console.log(x);
  47. var y = 'y';
  48. }
  49. qj7()
  50. //结果:xundefined 说明:js执行引擎,自动提升了y的声明,但是不会提升变量y的赋值
  51. //在JavaScript建立之初就存在的特性。养成规范:所有的变量定义都放在函数的头部,不要乱放,便于代码的维护
  52.  
  53. //⑥局部作用域 let
  54. function f() {
  55. for (let i = 0; i<100;i++){
  56. console.log(i)
  57. }
  58. console.log(i+1);//问题:i出了这个作用域还可以使用 解决:建议都用let去定义局部作用域的变量;
  59. }
  60. //⑦常量 const
  61. //ES6之前,只有用全部大写字母命名的变量就是常量;建议不要修改这样的值
  62. var PI = '3.14';
  63. console.log(PI);
  64. PI = '2412';
  65. console.log(PI);
  66. //在ES6引入了常量关键字 const
  67. const PI = '3.14';
  68. console.log(PI);
  69. /* PI = '2412';//尝试赋值给常量或只读变量 */
  70.  
  71. </script>
  72.  
  73.  
  74.  
  75. </body>
  76. </html>

 

10.方法

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8.  
  9.  
  10. <script>
  11.  
  12. function getAge () {
  13. //今年-出生的年
  14. var now = new Date().getFullYear();
  15. return now -this.bitrh;
  16. //zhangsan.age() 20 getAge() NaN
  17. //this是无法指向的,是默认指向调用它的那个对象;
  18. }
  19. //方法就是把函数放在对象的里面,对象只有两个东西:属性和方法
  20. var zhangsan = {
  21. name:'张三',
  22. bitrh:2002,
  23. //方法
  24. age:getAge
  25. }
  26. //apply 在js中可以控制this指向
  27. getAge().apply(zhangsan,[]);//表示this指向了zhangsan这个对象
  28. //属性 zhangsan.name 方法,一定要带() zhangsan.age()
  29.  
  30.  
  31. </script>
  32. </body>
  33. </html>

 

11.Date

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8.  
  9. <script>
  10.  
  11. var now = new Date();
  12. console.log(now);//Thu Mar 10 2022 15:41:07 GMT+0800 (中国标准时间)
  13. now.getFullYear();//
  14. now.getMonth();//
  15. now.getDate();//日w
  16. now.getDay();//星期几
  17. now.getHours();//
  18. now.getMinutes();//
  19. now.getSeconds();//
  20. now.getTime();//时间戳 全世界统一 从1970 1.1 0:00:00到现在的毫秒数
  21. console.log(new Date(1646898067133));//时间戳转为时间
  22. now.toLocaleString();//'2022/3/10 15:53:56'
  23. now.toGMTString();//'Thu, 10 Mar 2022 07:53:56 GMT'
  24.  
  25. </script>
  26.  
  27.  
  28.  
  29. </body>
  30. </html>

 

12.JSON

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8.  
  9. <script>
  10.  
  11. var user ={
  12. name:"zhangsan",
  13. age:3,
  14. sex:''
  15. }
  16. //对象转化为json字符串
  17. var jsonUser = JSON.stringify(user); //{"name":"zhangsan","age":3,"sex":"男"}
  18.  
  19. //json 字符串转化为对象 参数为json字符串
  20. var obj = JSON.parse('{"name":"zhangsan","age":3,"sex":"男"}');
  21. /*
  22. {name: 'zhangsan', age: 3, sex: '男'}
  23. age: 3
  24. name: "zhangsan"
  25. sex: "男"
  26. */
  27.  
  28.  
  29. /*JSON和JS对象的区别
  30. * var obj = {a:'hello',b:'hellob'};
  31. * var json = '{"a":"hello","b":"hellob"}'
  32. * */
  33.  
  34. </script>
  35. </body>
  36. </html>

 

13.原型对象

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8.  
  9.  
  10. <script>
  11. var Student = {
  12. name:"zhangsan",
  13. age:3,
  14. run:function () {
  15. console.log(this.name + "我正在跑...")
  16. }
  17. };
  18. var xiaoming = {
  19. name:"xiaoming"
  20. };
  21. //小明的原型 是 Student
  22. //xiaoming.__proto__ = Student;
  23.  
  24. var Bird = {
  25. fly:function () {
  26. console.log(this.name + "我正在飞...")
  27. }
  28. }
  29. //小明的原型 是 Bird
  30. xiaoming.__proto__ = Bird;
  31. </script>
  32. </body>
  33. </html>

 

14.class继承

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8.  
  9. <script>
  10. /* ES6之前的定义方式
  11. function Student(name) {
  12. this.name = name;
  13. };
  14. //给student新增一个方法
  15. Student.prototype.hello = function () {
  16. alert('hello')
  17. };*/
  18.  
  19. //ES6之后=========
  20. //定义一个学生的类
  21. class Student{
  22. constructor(name) {
  23. this.name = name;
  24. }
  25. hello(){
  26. alert('hello')
  27. }
  28. }
  29. class xiaoStudent extends Student{
  30. constructor(name,grade) {
  31. super(name);
  32. this.grade = grade;
  33. }
  34. myGrade(){
  35. alert('我是一名小学生')
  36. }
  37. }
  38. var xiaoming = new Student("xiaoming");
  39. var xiaohong = new xiaoStudent("xiaohong",53);
  40. </script>
  41.  
  42. </body>
  43. </html>

 

版权声明:本文为加油少年!原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/tuyin/p/16556215.html