一篇文章带你学完JavaScript基础知识,超全的JavaScript知识点总结

news2024/12/22 20:59:06

目录

内置函数

alert警告框

promopt提示框   

console控制台

字面量

数字型

字符串型

变量

声明与赋值

类型检测

类型转换

比较运算符

逻辑运算符

条件句

if else

switch

break,continue

while

赋值运算符

函数

关键字形式函数

变量认知

作用域

表达式形式函数

IIFE

数组

字符串


 

学习时记得跟着代码敲一遍以便加深印象哦

内置函数

alert警告框

<script type="text/javascript">
alert("hello");
alert('hello');
alert(hello);
</script>
//弹框两次,alert的内容必须由单引号或者双引号引用。

promopt提示框   

<script type="text/javascript">
prompt("hello");
prompt('hello');
</script>

console控制台

<script type="text/javascript">
//控制台打印
console.log('coleak1');
console.log('coleak2',"coleak3");
</script>

字面量

数字型

整数,小数,特殊值

<script type="text/javascript">
console.log(6e2);
console.log(3.14e2);
</script>

600,314

<script type="text/javascript">
console.log(-.45);
console.log(.125);
</script>

-0.45,0.125

<script type="text/javascript">
console.log(0.1+0.2);
console.log(.1+0.4);
console.log(.3+0.4);
</script>

0.30000000000000004,0.1+0.2比较特殊,二进制运算保留位数问题
0.5
0.7

Infinity

数字范围在-2^53~2^53之间,超过范围用infinity表示(也有正无穷和负无穷之分)

<script type="text/javascript">
console.log(-Infinity);
console.log(6E1243453);
</script>

-Infinity
Infinity

NaN

<script type="text/javascript">
console.log(0/0);
</script>

NaN,注意1/0为Infinity

字符串型

<script type="text/javascript">
console.log('666');
console.log(666);
</script>

打印结果分别为黑色字符串和蓝色整形

变量

声明与赋值

<script type="text/javascript">
var a=10;
var b;
b=20;
console.log(a,b);
</script>

打印结果为蓝色的10 20

<script type="text/javascript">
var b;
console.log(b);
</script>

打印结果为:undefined

<script type="text/javascript">
var b=100;
console.log(b);
console.log('b');
</script>

100
b

<script type="text/javascript">
console.log(b);
var b=100;
console.log(b);
</script>

undefined
100

注:各大浏览器的解析器会把变量声明提升到当前作用域的最上方

类型检测

<script type="text/javascript">
    console.log(typeof "666");
    console.log(typeof 123);
    console.log(typeof 3.14);
    console.log(typeof Infinity);
    console.log(typeof NaN);
    console.log(typeof true);
    console.log(typeof undefined);
    console.log(typeof null);
    var age = 666;
        age = "111";
    console.log(typeof age);
 </script>

string
number
number
number
number
boolean
undefined
object,但是null属于NULL类型
string

类型转换

连字符+

<script type="text/javascript">
var age=11;
var name="coleak";
console.log(typeof (age+name));
console.log(age+name);
 </script>

string

11coleak

parseint parsefloat


<script type="text/javascript">
console.log(parseInt("666"));
console.log(parseInt("666.555"));
console.log(parseInt("coleak"));
console.log(parseInt("666coleak"));
console.log(parseFloat("666.66coleak"));
console.log(parseFloat("666coleak"));
 </script>

666
666
NaN
666
666.66
666

<script type="text/javascript">
var age=prompt("请输入你的年龄");
console.log(typeof age);
console.log("你的年龄是"+age+"岁");
 </script>

string
你的年龄是100岁

<script type="text/javascript">
        console.log(true + 66);
        console.log(false * 88);
        console.log(undefined / 33);
        console.log(null - 888);
        console.log(true + null);
</script>

67
0
NaN
-888
1

比较运算符

>

大于

>=

大于等于

<

小于

<=

小于等于

==

相等

!=

不等

===

全等

!==

不全等

<script type="text/javascript">
console.log(99==99);
console.log(99=="99");
console.log(99===99);
console.log(99==='99');
</script>

true
true
true
false

逻辑运算符

逻辑运算符一共三个:逻辑与&&、逻辑或||、逻辑非!

<script type="text/javascript">
    console.log(0 && 99);
    console.log(135 && 6);
    console.log(NaN && Infinity);
    console.log(null && undefined);
    console.log("张三" && "李四");
    console.log(0||NaN);
    console.log(123 || 456);
    console.log("" || Infinity);
    console.log(undefined||"贾称号");
    console.log(3 > 6 && 99 < 22);
    console.log(66 < 100 &&"coleak");
 </script>

0
(索引):14 6
(索引):15 NaN
(索引):16 null
(索引):17 李四
(索引):18 NaN
(索引):19 123
(索引):20 Infinity
(索引):21 贾称号
(索引):22 false
(索引):23 coleak

条件句

if else

<script type="text/javascript">
  //用户输入一个分数
  var score = prompt("请你输入一个分数");
  if(score >= 60){
  	 alert("及格了");
  }else{
  	 alert("挂科啦");
  }
</script>
<script type="text/javascript">
    var score = prompt("请你输入一个分数");
    if(score < 60){
        alert("来补考");
    }
    else if(score < 70)
    {
        alert("及格了");
    }
    else if(score < 90)
    {
        alert("良好");
    }
    else{
        alert("优秀")
    }
  </script>

switch

  1. switch条件语句的条件,可以是变量(存储任意类型数据)。
  2. case后面紧随条件语句情况。
  3. break关键字的作用是终止、打破switch条件语句。执行条件语句后面代码。
  4. default关键字,可以理解为else,对于上面分支条件进行全部否定。

break,continue

while

<script type="text/javascript">
    var num = 0 ;
    do{
          num++;
       console.log(num);
    }while(num < 10);
 </script>
<script type="text/javascript">
  do{
  	   var a = parseInt(Math.random()*10);
  	   var b = parseInt(Math.random()*10);
  }while(a==0&&b==0);
  console.log(a,b);
 </script>
//在控制台中输出两个随机数字【0~9】,且两者不同同时为零。

赋值运算符

= 、 +=、-=、*=、/=、%=、自增 ++ 、自减 --

函数

一种关键字function定义函数、表达式形式函数

关键字形式函数

关键字形式函数,需要通过关键字function进行声明、定义。函数在JS当中属于Object引用类型数据。函数如果只是声明、但是没有调用。函数体里面代码不会运行。如下,因为没有调用所以不会报错。

<script type="text/javascript">
    function func (){
乱七八糟瞎写一通
    }
    // func();
  </script>

变量认知

局部变量只能在函数体中使用。

全局变量:除了局部变量以外的都是全局变量,

全局变量,可以在JS行为层中任意地方使用。

作用域

<script type="text/javascript">
    var num = 66;
    function fun (){
          var num = 99;
        console.log(num);
    }
    fun();
    console.log(num);
</script>

99,66

<script type="text/javascript">
  var num = 66;
  function fun (){
  	  console.log(num);
  	  var num = 99;
  }
  fun();
</script>

undefined

在JS当中任何语句都阻挡不了变量声明部分提升,会提升到当前作用域最上方。

表达式形式函数

就是将关键字function定义的函数赋值给变量形式

<script type="text/javascript">
    //表达式形式函数
    var fun = function(){
    	 var a = 666;
    	 var b = 111;
    	 console.log(a + b);
    }
    fun();
</script>
  1. 关键字形式函数可以在声明之前、声明之后调用。
  2. 由于解析器,可以将关键字形式函数声明部分提升到当前作用域最上方。
  3. 表达式形式函数:只能在声明之后才可以调用。
  4. 表达式形式函数:由于变量声明部分提升(提升到当前作用域最上方),因此是undefined。

IIFE

在声明表达式形式函数的同时立刻马上执行一次

<script type="text/javascript">
    //IIFE:声明 表达式形式函数同时 立刻、马上执行一次
    //表达式形式函数的   声明部分
    var fun = function (){
     console.log('我执行了')
    }();
  </script>

199,69

数组

<script type="text/javascript">
    //数组:可以存储任意类型的元素
    var arr = ["吃饭","睡觉","打豆豆",true,NaN];
    //读取数据:可以利用枚举法获取数组里面元素
    console.log(arr[0]);
    console.log(arr[1]);
    console.log(arr[4]);
    console.log(arr[99]);
  </script>

吃饭
睡觉
NaN
undefined

<script type="text/javascript">
    //数组:可以存储任意类型的元素
    var arr = ["吃饭","睡觉","打豆豆",true,NaN];
    //读取数据:可以利用枚举法获取数组里面元素
    console.log(arr[0]);
    console.log(arr[1]);
    console.log(arr[4]);
    console.log(arr[99]);
    //修改已有的数据
    arr[1] = "学习";
    arr[4] = '小帅哥';
    //给数组添加新的数据
    arr[5] = false;
    arr[999] = 'coleak';
    console.log(arr);
  </script>

吃饭
睡觉
NaN
undefined
(1000) ['吃饭', '学习', '打豆豆', true, '小帅哥', false, 空 ã993, 'coleak']

<script type="text/javascript">
    //声明一个数组
    var arr = ["吃饭","睡觉","打豆豆",true,[1,2,3]];
    //length属性:获取当前数组的元素总个数
    console.log(arr.length);
    console.log(arr[4][1]);
  </script>

5

2

<script type="text/javascript">
    //数组
    var arr = ["小鸡","三饼","四条","白板"];
    //push:可以在数组的尾处添加一个或者多个元素
    arr.push("曹操");
    arr.push("刘备",NaN,"coleak");
    console.log(arr);
    //数组
    var arr1 = ['手机','电视','彩电','洗衣机'];
    //pop:可以在数组的尾处移除一个元素
    arr1.pop();
    arr1.pop();
    console.log(arr1);
  </script>

(8) ['小鸡', '三饼', '四条', '白板', '曹操', '刘备', NaN, 'coleak']
(2) ['手机', '电视']

备注:

  1. unshift:可以向数组头部添加一个或者是多个元素
  2. shift:可以向数组的头部移除一个元素
  3. join:主要的作用是可以通过某一个字符将数组拼接转换为字符串。
  4. reverse:可以把当前的数组的元素进行倒置。
  5. 数组的join方法:可以通过某一个字符串将数组转换为一个字符串。【对起始数组没有任何影响】
  6. 数组的reverse方法:可以将当前的数组的元素进行倒置。
<script type="text/javascript">
    //数组
    var arr = [1,2,3,4,5,6];
    //join:可以通过某一个字符将数组转化为字符串
    var str = arr.join("*");
    var str1 = arr.join('');
    console.log(arr,str,str1);
    //数组
    var arr = ['北京',"上海",'深圳','广州'];
    arr.reverse();
  console.log(arr);
</script>

(6) [1, 2, 3, 4, 5, 6] '1*2*3*4*5*6' '123456'
(4) ['广州', '深圳', '上海', '北京']

  1. indexOf:它可以获取数组当中某一个元素的索引值【下脚标】
  2. includes:它主要的作用是检测某一个元素是不是当前这个数组的。如果是【返回布尔值真】,否则【返回布尔值假】
<script type="text/javascript">
    //数组
    var arr = ['吃饭','睡觉','打豆豆','烫头'];
    //indexOf:这个方法主要的作用是可以获取到某一个元素的索引值
    console.log(arr.indexOf("吃饭"));
    console.log(arr.indexOf('打豆豆'));
    console.log(arr.indexOf('666'));
    //includes:这个方法主要的作用是检测数据是不是当前数组的
    console.log(arr.includes("吃饭"));
    console.log(arr.includes('coleak'));
  </script>

0
2
-1
true
false

  1. slice:从起始数组当中切割出一个新的子数组
  2. splice:可以对数组进行切割、插入、替换。
  3. slice方法:数组通过这个方法可以切割出一个新的数组【slice对于起始数组没有任何影响】
  4. slice方法:传递参数至少一个、最多两个参数。【起始索引值、结束索引值)
  5. splice:可以对于起始数组进行切割,返回一个新数组【对于起始数组有影响】
  6. 第一个参数:切割的起始位置索引值,第二个参数:切割元素的长度
<script type="text/javascript">
    //数组
    var arr = ['张飞','刘备','关羽','马超','黄忠','曹操'];
    //slice:主要的作用是切割某一个数组并且返回一个新的数组
    //这个方法传参至少一个参数【都是数组的索引值】
    var newArr = arr.slice(2);
    var newArr1= arr.slice(1,3);
    console.log(newArr);
    console.log(newArr1);
    console.log(arr);
  </script>

(4) ['关羽', '马超', '黄忠', '曹操']
(2) ['刘备', '关羽']
(6) ['张飞', '刘备', '关羽', '马超', '黄忠', '曹操']

<script type="text/javascript">
    //数组
    var arr = [55,33,21,88,57,48,29];
    //splice:可以对于当前数组进行切割、插入、替换元素操作
    //切割:第一个参数切割起始位置索引值
    //传递一个
    var newArr1  = arr.splice(2,2);
    // console.log(newArr);
    //传递两个参数:第一个参数代表的是切割起始位置、第二个参数切割长度
     var newArr2  = arr.splice(2);
     console.log(newArr1);
     console.log(newArr2);
     console.log(arr);
</script>

(2) [21, 88]
(3) [57, 48, 29]
(2) [55, 33]

字符串

<script type="text/javascript">
    var str = "我爱你我的祖国";
    console.log(str.length);
  </script>

7

  1. indexOf:获取到第一个匹配到的字符的索引值。
  2. lastIndexOf:获取到的最后一个匹配到的字符的索引值。
<script type="text/javascript">
    //indexOf:获取到一个匹配到的字符串的  索引值
    var str = "我爱你我的祖国";
    console.log(str.indexOf("我"));
    console.log(str.indexOf('666'));
    console.log(str.lastIndexOf('我'));
 </script>

0
-1
3

  1. toLowerCase:将字符串中英文字符变为小写
  2. toUpperCase:将字符串中英文字符变为大写
<script type="text/javascript">
    var str = "我喜欢英文aBcD";
    var newStr = str.toUpperCase();
    var newStr1 = str.toLowerCase();
    console.log(newStr);
    console.log(newStr1);
    console.log(str);
  </script>

我喜欢英文ABCD
我喜欢英文abcd
我喜欢英文aBcD

  1. search:它的作用是可以获取到某一个字符的索引值。
  2. split:它的作用是可以将字符串通过某一个字符切割为数组。
<script type="text/javascript">
    var str = "我是祖国的花骨朵";
    //search:获取到某一个字符的索引值
    console.log(str.indexOf("祖"));
    console.log(str.search("祖"));
 </script>
 <script type="text/javascript">
       var str = "我今天买了一个华为手机花了我5888";
       //split:可以将字符串通过某一个字符分割为一个数组
       var arr = str.split("华");
       var arr1 = str.split("");
       console.log(arr);
       console.log(arr1);
 </script>

2
2
(2) ['我今天买了一个', '为手机花了我5888']
(18) ['我', '今', '天', '买', '了', '一', '个', '华', '为', '手', '机', '花', '了', '我', '5', '8', '8', '8']

  1. substring:它是字符串方法,主要的作用是在父串当中切割出一个子串  
  2. str.substring(起始索引值,结束索引值)    包含起始索引值、不包含结束索引值
  3. substr:它也是字符串方法,它主要的作用也是从父串当中切割出一个子串
  4. str.substr(起始索引值,切割长度)
  5. replace:可以替换某一个字符串中复合条件的字符进行替换。
  6. match:可以进行将某一个字符串中符合条件的第一个字符匹配出来,返回的是一个数组。
<script type="text/javascript">
    var str = "我今天买了一个华为手机,花了我5688元";
    //replace:可以将某一个字符串中符合条件的字符进行替换
    var newStr = str.replace("华为","vivo");
    console.log(newStr);
    console.log(str);
  </script>
  <script type="text/javascript">
    var str = "coleakayuexiao";
    //match:可以将某一个字符串中第一个符合条件的字符匹配出来,返回一个数组
     var arr  = str.match("a");
     console.log(arr);
  </script>

我今天买了一个vivo手机,花了我5688元
我今天买了一个华为手机,花了我5688元
['a', index: 4, input: 'coleakayuexiao', groups: undefined]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/165659.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么样的故障让阿里云换了总裁?

&#x1f4e3;&#x1f4e3;&#x1f4e3;&#x1f4e3;&#x1f4e3;&#x1f4e3;&#x1f4e3; &#x1f38d;大家好&#xff0c;我是慕枫 &#x1f38d;前阿里巴巴高级工程师&#xff0c;InfoQ签约作者、阿里云专家博主&#xff0c;一直致力于用大白话讲解技术知识 &#x…

SpringBoot数据访问Redis

目录 前言 1、Redis自动配置 2、RedisTemplate与Lettuce 3、切换至jedis 前言 Redis 是一个开源&#xff08;BSD许可&#xff09;的&#xff0c;内存中的数据结构存储系统&#xff0c;它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构&#xff0c;如 字符串…

基于贝叶斯算法的邮件过滤管理系统的设计和实现(Vue+SpringBoot)

作者主页&#xff1a;Designer 小郑 作者简介&#xff1a;Java全栈软件工程师一枚&#xff0c;来自浙江宁波&#xff0c;负责开发管理公司OA项目&#xff0c;专注软件前后端开发&#xff08;Vue、SpringBoot和微信小程序&#xff09;、系统定制、远程技术指导。CSDN学院、蓝桥云…

Java对象引用级别

为了使程序能更灵活地控制对象生命周期&#xff0c;从 JDK1.2 版本开始&#xff0c;JDK把对象的引用级别由高到低分为强引用、软引用、弱引用、虚引用四种级别。 强引用 StrongReference 强引用是我们最常见的对象&#xff0c;它属于不可回收资源&#xff0c;垃圾回收器&…

区块链技术3--BTC协议

1数字货币中经常出现的问题&#xff1a;双花攻击 数字货币本身为带有签名的数据文件&#xff0c;可以进行复制。即&#xff1a;对用户来说&#xff0c;可以将同一货币花费两次。对货币添加唯一编号&#xff08;不可篡改&#xff09;&#xff0c;每次支付向货币发行单位查询真伪…

数据标注平台(CVAT)安装及踩坑记录

目录 一、CVAT安装 step1 安装docker step2 获取权限 step3 获取权限 step4 克隆cvat源代码 step5 构建docker镜像 step6 运行Docker容器这一步要下载公共docker映像&#xff0c;耗时看网速&#xff0c;但是不会太久。 step6 创建管理员用户 step7 关闭cvat服务 二、…

算法第十二期——BFS-判重

目录 BFS判重 Python判重方法: set、字典 set()判重 字典判重 例题&#xff1a;跳蚱蜢 思路 【建模】 去重 代码一&#xff1a;字典去重&#xff08;用list实现队列&#xff09; 代码二&#xff1a;set()去重&#xff08;用list实现队列&#xff09; 代码二&#xff…

CRMEB开源商城部署在腾讯云2

目录PHP在安装过程中会监测Redish5跨域PHP在安装过程中会监测Redis public\install\index.php if (extension_loaded(redis)) {$redis <span class"correct_span">&radic;</span> 已安装;} else {$redis <a href"https://doc.crmeb.com/w…

2个大厂 100亿级 超大流量 红包 架构方案

2个大厂 100亿级 超大流量 红包 架构方案 文章目录2个大厂 100亿级 超大流量 红包 架构方案100亿级 红包 应用 场景概述百亿级 微信红包技术架构架构**南北分布****拆红包入账异步化****发拆落地&#xff0c;其他操作双层cache**高并发**红包算法****柔性降级方案**360w QPS 10…

Nginx与LUA(3)

您好&#xff0c;我是湘王&#xff0c;这是我的CSDN博客&#xff0c;欢迎您来&#xff0c;欢迎您再来&#xff5e;在互联网应用中&#xff0c;很多场景都会涉及到高并发请求&#xff0c;如果不对这些请求做限制&#xff0c;那么服务器很快就会被挤垮。就像在12306买票一样&…

计算机图形学实习教程之基本图形的生成(扫描线填充算法+图形缩放算法+对称变换算法+消隐算法+金刚石图案算法),利用C#实现,附源码

环境&#xff1a;Win10Visual Studio 2022 Community 在本次实验中需要用到第一篇文章实验内容的代码及环境&#xff0c;详情请见&#xff1a;传送门 目录 一、实验目的 二、实验步骤 1.扫描线填充算法 2.图形的缩放算法 3.对称变换算法 4.消隐算法 5.金刚石图形算法 一…

Unity 3D 人形角色动画(Avatar)||Unity 3D 导航系统||Unity 3D 障碍物

Unity 3D 人形角色动画&#xff08;Avatar&#xff09; Mecanim 动画系统适合人形角色动画的制作&#xff0c;人形骨架是在游戏中普遍采用的一种骨架结构。。 由于人形骨架在骨骼结构上的相似性&#xff0c;用户可以将动画效果从一个人形骨架映射到另一个人形骨架&#xff0c…

基于Java+SpringBoot+Vue求职招聘系统设计与实现

博主介绍&#xff1a;✌全网粉丝3W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供毕业项目实战✌ 博主作品&#xff1a;《微服务实战》专栏是本人的实战经验总结&#xff0c;《Spring家族及微服务系列》专注…

《Buildozer打包实战指南》第一节 在虚拟机中安装Ubuntu系统

目录 1.1 下载并安装Virtual Box虚拟机 1.2 下载并安装Ubuntu系统 由于Buildozer不能在Windows系统上打包&#xff0c;只能运行于Linux&#xff0c;所以我们可以在Windows系统上安装一个虚拟机&#xff0c;并在虚拟机中安装Linux。在本教程中笔者将会一直使用Ubuntu系统&…

大数据分案例-基于随机森林算法构建返乡人群预测模型

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

ubuntu16.04安装verilator+systemc并运行测试程序

link Verilator 能够把可综合的&#xff08;通常不是行为级&#xff09;的Verilog代码&#xff0c;外加一部分Synthesis&#xff0c;SystemVerilog和一小部分Verilog AMS代码转换成C或者SystemC代码。Verilator不是一个完整的模拟器&#xff08;simulator&#xff09;&#xff…

打工人必学的法律知识(六)——《劳动法》案例-差绩效不等于「不能胜任工作」

目录 一、差绩效不等于「不能胜任工作」 二、劳动者无条件解除劳动合同的情形 一、差绩效不等于「不能胜任工作」 员工在用人单位等级考核中居于末位等次&#xff0c;不等同于“不能胜任工作”&#xff08;最高人民法院指导案例18号&#xff09; 2005年7月&#xff0c;被告王…

【Linux】Linux多线程(上)

前言 hi~ 大家好呀&#xff0c;欢迎来到我的Linux学习笔记。本篇笔记将会重点从内核结构引入Linux下的线程&#xff0c;理解Linux下线程和进程的相关性和区别&#xff0c;以及线程相关的操作方法&#xff0c;在到之后的线程互斥和线程同步中的条件变量相关概念哦~ Linux进程控…

世界杯数据可视化分析

目录 1.数据来源 2.字段解释 世界杯成绩信息表&#xff1a;WorldCupsSummary 世界杯比赛比分汇总表&#xff1a;WorldCupMatches.csv 世界杯球员信息表&#xff1a;WorldCupPlayers.csv 3.数据分析及可视化 世界杯已经告一段落&#xff0c;作为一个学习大数据的学生&…

CentOS即将停止维护,拥抱阿里“龙蜥“(Anolis OS),VMware安装Anolis OS与介绍

一、前言 大家在自己电脑来进行服务器的一些操作时&#xff0c;基本都是使用CentOS 7或者是CentOS 8&#xff0c;但是2021年底CentOS 8宣布停止了维护&#xff1b;CentOS 7 在2024年6月30日也会停止维护&#xff01; 所以我们是时候换一个操作系统了&#xff0c;经过十几年的…