JS 基础

JS基础

一、JS的引入方式

**内部:**写在的上面

<body>
    <script>
        alert('你好,欢迎来到js世界~')
    </script>
</body>

**外部:**将.js文件写到js文件夹中,然后再引入

<body>
    <script src="./js/my.js"></script>  //外部js不要写代码,写了也不会被执行
</body>

**内联:**写在标签内部

<body>
    <button onclick="alert('逗你玩~')">点我月薪过万</button>
</body>

二、JS注释

//  这是js单行注释 快捷键:Ctrl+/

/* 这是js多行注释
这是js多行注释
这是js多行注释 */    快捷键:shift+Alt+a

三、JS输入输出语法

<!--输出语法-->
<body
    <script>
        // 输出语句
        alert('逗你玩~')
        document.write('js输出语法')
        console.log('日志')
        // 输入语句
        prompt('请输入您的年龄:')
    </script>

**注意:**alert()、prompt()会有限执行

四、变量

<body>
    <script>
				//变量声明用let
        let age = 20,name='ahong'
        alert(age)
      	//用户输入变量的值
      	let uname
        uname=prompt('请输入姓名')
        document.write(uname)
    </script>
</body>

**本质:**程序在内存中申请一块用来存放数据的小空间

变量命名规范:

  • 不能用关键字作为变量名,如let、var、if等
  • 变量名中只能出现字母、数字、下划线、$,且数字不能在开头
  • 严格区分大小写

var声明变量的不合理点

  • 可以先使用、后声明
  • var声明的变量可以重复声明

常量:用关键字const声明。如 const PI = 3.14

五、数据类型

基本数据类型:

  • number 数字型——>所有的数字,正数、负数、浮点数等等
  • string 字符串型——>用单引号、双引号、反引号括起来
  • boolean 布尔型——>只有true、false两种值
  • undefined 未定义型——>只定义、不赋值的变量为未定义型
  • null 空类型——> 定义格式:let age = null

引用数据类型

  • object对象
<script>
  			// 字符串拼接
        let age = prompt('请输入年龄:')
        document.write('我今年' + age + '岁了')

        // 模板字符串
        document.write(`我今年${age}岁了`) // 必须使用反引号
    </script>

检测数据类型格式:typeof 变量名 eg:typeof age

六、类型转换

隐式转换:

  • +号两边只要有一个字符串,都会把另一个转成字符串
  • 除了+号外的运算符,如- * /都会把数字类型转换成数字类型
  • +号作为正号解析时,可以将字符串转化为数字型(单用时)

显示转换:

  1. 转换为数字类型
  • Number(数据) 若字符串内容为非数字时,转换失败为NaN
  • parseInt(数据) 只保留整数——>向下取整
  • parseFloat(数据) 可以保留小数

转换为Boolean类型:

  • 0、undefined、null、NaN转换为布尔类型都为false,其余都为true

七、运算符

赋值运算符: = += -= /= *=

一元运算符: 正负号 ++ –

比较运算符:> < >= <= == === != !==(不全等)

  • :只判断值是否相等,如2’2’ 返回true
  • =:判断值和数据类型是否相等,如2’2’ 返回false**(常用)**
  • !=和 !==与上述两个类似

逻辑运算符:&&(与) ||(或) !(非)

运算符优先级:

优先级运算符顺序
1小括号()
2一元运算符++ – !
3算数运算符先* / % 后 + -
4关系运算符> >= < <=
5相等运算符== != === !==
6逻辑运算符先&& 后||
7赋值运算符=
8逗号运算符,

八、分支语句和循环语句

**程序三大流程控制语句:**顺序结构、分支结构和循环结构

分支语句:

  • if分支
<body>
    <script>
        if(条件){
            alert('')
        }
        else if(条件){
						alert('')
        }
        else(条件){
            alert('')
        }
    </script>
</body>
  • 三元运算符
// 条件?满足条件执行这里:不满足条件执行这里
<script>
        let num1 = +prompt('请输入第一个数')
        let num2 = +prompt('请输入第二个数')
        max = num1>=num2 ? num1 : num2
        alert(max)
    </script>
  • switch分支
<body>
    <script>
        let choice = +prompt('请输入您的选择')
        switch (choice){
            case 1:
                document.write('您选择的是1分支')
                break
            case 2:
                document.write('您选择的是2分支')
                break
            case 3:
                document.write('您选择的是3分支')
                break
            default:
                document.write('无符合条件的')
        }
    </script>
</body>

**总结:**分支语句少时,if…else语句执行效率高;分支语句多时,switch语句执行效率高,且结构清晰。

循环语句:

  • while循环
<script>
        let num = 0
        while (num<100){
            console.log(`这是第${num}次执行`);
            num++
        }
    </script>

for循环

//语法 for(遍历起始值;终止条件;变量变化量){
//				循环体
//}

循环结束:

  • break:退出循环
  • continue:结束本次循环,继续下次循环

计算数组长度:数组名.length

循环嵌套

//语法 for(外部遍历起始值;终止条件;变量变化量){
//					for(内部遍历起始值;终止条件;变量变化量){
//				循环体
//					}
//}
 <script>
        // for循环打印乘法表
        for (i = 1; i <= 9; i++){
            for(j = 1; j <= i; j++){
                document.write(`${i}*${j}=${i*j}&nbsp&nbsp&nbsp`)
                if(i === j){
                    document.write('<br>')
                }
            }
        }
    </script>

九、数组

数组:是一种可以按顺序保存数据的数据类型

数组操作:

// 增
// arr.push(数据1, 数据2, 数据3)  在数组arr末尾添加数据,返回添加元素后数组长度
// arr.unshift(数据1, 数据2, 数据3)  在数组arr开头添加数据,返回添加元素后数组长度

// 删
// arr.pop() 删除数组末尾的元素,并返回删除元素的值
// arr.shift() 删除数组开头的元素,并返回删除元素的值
// arr.splice(起始位置, 删除几个元素)

// 数组排序
//arr.sort(function(a,b){    
//            return a - b        //升序用a-b,降序用b-a
//       })

十、函数

**函数:**执行特定任务的代码块

**作用:**精简代码、方便复用

// 函数声明
function 函数名(){
		函数体
}

// 函数调用
函数名()

函数传递参数:提高函数的灵活性

// 函数声明
function 函数名(参数1, 参数2, 参数3,...){
		函数体
}

return:

  • 将函数内部的执行结果交给外部使用
  • return后面的语句不会被执行
  • return语句不能换行写

作用域:

  • 全局作用域:作用于所有代码执行的环境
  • 局部作用域:作用于函数内的代码环境

匿名函数:

  • 使用方式
// 匿名函数函数表达式
// 定义
let num = function(参数1, 参数2){
  
}
// 调用
num(参数1, 参数2)
  • 匿名函数与具名函数区别:

具名函数可以写到任意位置

函数表达式必须先写表达式,后调用

// 匿名函数之立即执行————>防止变量污染
// 方式一
(function(形参){
  
})(实参);
// 方式二
(function(形参){
  
}(实参));

十一、对象

**对象(object):**一种数据类型,是无序的数据集合——>用于描述某个具体的事物。

对象由属性和方法组成

// 对象声明
let person = {}

let 对象名 = {
  属性:属性值,        // 属性和属性值之间用:隔开;多个属性之间用,隔开
  方法:函数,
}

对象的操作:属性的增删改查

let goods = {
            uname : '小米',
            num : '100457',
            weight : '0.4kg',
            address : '中国大陆'

        }
// 查      对象名.属性   对象名['属性']
goods.uname
goods['属性']
// 改      对象名.属性 = 其他值
goods.weight = '0.7kg'
// 增      对象名.新属性 = 值
goods.price = 4999
// 删       delete 对象名.属性
delete goods.num

对象的方法

let goods = {
            uname : '小米',
            num : '100457',
            weight : '0.4kg',
            address : '中国大陆',

            // 方法
            Print : function(){
                document.write('num')
            }
        }

遍历对象:

// 对象的遍历
       for (let k in goods){        // k为字符串类型
        console.log(k)
        console.log(goods[k])
       }

内置对象:

1、Math对象

  • Math.random() 生成0-1之间的随机数,包括0和不包括1

  • Math.ceil() 向上取整

  • Math.floor() 向下取整

  • Math.max() 取最大值

  • Math.min() 取最小值

  • Math.pow() 幂运算

  • Math.abs() 取绝对值

  • Math.round() 四舍五入

null是空对象

**生成N-M之间的随机数:**let r = Math.floor(Math.random()*(N-M+1)+N)

十二、拓展

1、术语解释

术语解释例子
关键字在JS中有特殊意义的词let、var、function、if、else、break等
保留字未来可能有特殊含义的词int、strong、long、char
标识符变量名、函数名的另一种叫法
表达式能产生值的语句,一般和运算符一起出现10+3
语句一段可执行的代码if()、for()

2、数据类型

值类型:简单数据类型/基本数据类型,在存储变量中存储的是值本身,因此叫做值类型,如string、number、boolean、null等

引用类型:在存储时变量中存储的仅仅是地址(引用),因此叫做引用数据类型,通过new关键字创建的对象,如Object、Array、Date等

值类型的数据存放在栈中,引用数据类型存放在堆中,然后在栈中存放堆中对应的地址。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值