引入方式
JavaScript 程序不能独立运行,它需要被嵌入 HTML 中,然后浏览器才能执行 JavaScript 代码。通过 script 标签将 JavaScript 代码引入到 HTML 中,有两种方式:
内部方式
通过 script 标签包裹 JavaScript 代码
            
            
              javascript
              
              
            
          
          <!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>JavaScript 基础 - 引入方式</title>
</head>
<body>
  <!-- 内联形式:通过 script 标签包裹 JavaScript 代码 -->
  <script>
    alert('嗨,欢迎来传智播学习前端技术!')
  </script>
</body>
</html>外部形式
一般将 JavaScript 代码写在独立的以 .js 结尾的文件中,然后通过 script 标签的 src 属性引入
            
            
              javascript
              
              
            
          
          // demo.js
document.write('嗨,欢迎来传智播学习前端技术!')
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>JavaScript 基础 - 引入方式</title>
</head>
<body>
  <!-- 外部形式:通过 script 的 src 属性引入独立的 .js 文件 -->
  <script src="demo.js"></script>
</body>
</html>如果 script 标签使用 src 属性引入了某 .js 文件,那么 标签的代码会被忽略!!!如下代码所示:
            
            
              javascript
              
              
            
          
          <!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>JavaScript 基础 - 引入方式</title>
</head>
<body>
  <!-- 外部形式:通过 script 的 src 属性引入独立的 .js 文件 -->
  <script src="demo.js">
    // 此处的代码会被忽略掉!!!!
    alert(666);  
  </script>
</body>
</html>数据类型
计算机世界中的万事成物都是数据。
计算机程序可以处理大量的数据,为了方便数据的管理,将数据分成了不同的类型:
注:通过 typeof 关键字检测数据类型
            
            
              javascript
              
              
            
          
          <!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>JavaScript 基础 - 数据类型</title>
</head>
<body>
  
  <script> 
    // 检测 1 是什么类型数据,结果为 number
    document.write(typeof 1)
  </script>
</body>
</html>数组
1、声明数组
            
            
              javascript
              
              
            
          
          let arr = [1,2,3,4]2、数组操作方法
Ⅰ、增
①arr.push() :将一个或多个元素添加到数组的末尾
②arr.unshift():将一个或多个元素添加到数组的开头
Ⅱ、删
①arr.pop() :从数组中删除最后一个元素,并返回该元素的值
②arr.shift():从数组中删除第一个元素,并返回该元素的值
③arr.splic(start,count):从start位置开始,删除count个元素
模板字符串
1、用于拼接字符串和变量
2、若不使用模板字符串,需要频繁使用单引号和加号拼接字符串和变量

3、使用模板字符串:使用反引号``,用${}包裹住变量

数据类型转换
使用表单、prompt 获取过来的数据默认是字符串类型的,此时就不能直接简单的进行加法运算。
            
            
              javascript
              
              
            
          
                  let num1 = prompt()//输入1
        let num2 = prompt()//输入2
        document.write(num1+num2);//结果为12隐式转换
1、 + 号两边只要有一个是字符串,都会把另外一个转成字符串
            
            
              javascript
              
              
            
          
          document.write(1+'1')//112、除了+以外的算术运算符 比如 - * / 等都会把数据转成数字类型
            
            
              javascript
              
              
            
          
          document.write(1-'1')//03、+号将数据可以转换成数字型
            
            
              javascript
              
              
            
          
           alert(typeof +'1')//number函数
匿名函数
            
            
              javascript
              
              
            
          
          function() {}一般函数为
            
            
              javascript
              
              
            
          
          function 函数名() {}使用方式:
函数表达式
将匿名函数赋值给一个变量,并且通过变量名称进行调用
            
            
              javascript
              
              
            
          
          let fn = function(){...}//匿名函数赋值给fn变量
fn();//调用立即执行函数
            
            
              javascript
              
              
            
          
          (function(){...})()对象
1、声明
            
            
              javascript
              
              
            
          
          let 对象名 = {
    
    属性名:属性值
    方法名:函数
}
            
            
              javascript
              
              
            
          
          let obj = {
    uname:'pink'
    gender:'男'
    
    age:18
    
    'goods-name':'撒旦'
       
    sayHi:function(){...}
}2、查属性名对应的属性值
方式1:obj.uname
方式2:obj['goods-name']
注意:属性goods-name只能通过方式2使用
3、遍历对象
            
            
              javascript
              
              
            
          
          let obj = {
        uname:'赵展鹏',
        age:18,
        gender:'男'
    }
    for (let key in obj) {
        //key获得属性名、obj[key]获得属性值
        console.log(key);
        console.log(`${key} = ${obj[key]}`)//uname = 赵展鹏、age = 18、gender = 男
    }简单数据类型&&引用数据类型
1、存储方式
简单数据类型包括number、boolen、string,这些类型的变量存储的是值, 当将一个简单数据类型的值赋给另一个变量时,实际发生的是值的复制,即两个变量拥有各自独立的值。
引用数据类型包括object、array、function、Data这些类型的变量存储的是内存地址 (即引用)。当将一个引用类型的变量赋给另一个变量时,实际的是内存地址的复制,这意味着两个变量指向同一个对象。
2、比较方式
当比较两个简单数据类型的变量时,比较的是它们的实际值。
当比较两个引用数据类型的变量时,比较的是它们的引用地址,即它们是否指向同一个对象。
3、内存分配
简单数据类型的值通常存储在栈中。
引用数据类型的值存储在堆内存中,而栈中保存的是指向堆中的指针。

4、能否用const修饰
            
            
              javascript
              
              
            
          
          let num = 1
num = num+1num不能用const修饰
            
            
              javascript
              
              
            
          
          let arr = [1,2,3]
arr.push(4)arr可以用const修饰,因为arr本身存储的是地址,该地址永远不会变,故可以用const修饰;
但以下情况arr存储的地址会变
            
            
              javascript
              
              
            
          
          let arr = [1,2,3]
arr = ['111','22','333']arr由数组【1,2,3】的地址变为数组【'111','22','333'】的地址了,故此时arr不能用const修饰