js语法基础

本文最后更新于 2024-02-15 10:29:05

JavaScript


(在这里,单引号和双引号表示一样,但是不能混用)


1. 弹出窗口

1
2
3
4
5
6
7
8
alert('弹出窗口')
document.write('直接显示在页面的用法')
console.log('使用检查时,控制台输出')//用于后台测试
confirm('确定框') // 对弹出窗口进行选择后,在次确定

prompt('提示框') //取回的值都是字符串类型
// prompt('提示信息(弹出窗口的提示文字)' , '默认值(文本框的内容,可以修改)')
//默认值也可以不写,当弹出来时,文本框是空的

对于 prompt ,如果写为注释中的形式,并且前面有变量,那么,这个变量会获取默认值,即弹出框输入的内容

1
2
3
var p1=prompt('弹出','发生的就看看') 
// '发生的就看看' 可以在弹出的文本框输入内容,输入的内容即被 p1 获取,然后输出到web页面
document.write(p1)

对于 confirm() :

1
2
3
4
5
6
7
var tf=confirm('选择')//第一层窗口显示的文字,'确定'的话 tf=true  '取消'的话 tf=false
if(tf){
alert('确定 ')
}
else{
alert('取消')
}

alert() 区别是:前者会再次弹出条件语句中的提示,进行再次确定


2. var(关键字,旧版不建议使用,改用 let 更好)

定义局部变量,不建议写成全局(即不用类似的关键字修饰)

var 在定义变量之前用不会报错(区别之一)

例如( var 不会报错):

1
2
num=10
var num=1

3. 循环语句:for…in…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for a in arr
{
document.write(a+' '+ arr[a])
document.write('<br/>')
}

/*
a 可以是变量名、数组元素或对象属性
arr 可以是对象名或者计算结果为对象的表达式

每次循环,arr对象的每一个属性或每一元素都执行一次循环,
!!!另:arr可以看做c++里的 map ,每次循环会将 key 值复制给 a , arr[a] 就是 value 值

用于不确定的数组,比如从页面获得一些数据,不知道是什么,也不知道是多少;但是对于类似以 c 的数组,也可用for去遍历,长度为 arr.length
*/

4.数组

声明: let a = []

写法:

1
2
3
let arr = [1,2,3]
//或者
let arr = ['rening','fasdf','fasd']

c 中的数组遍历方法一样,下标从0开始

1
let m = arr.length //数组长度 

数组的新增:

1
2
3
4
arr.push(元素1, 元素2.....);
//将变量放到数组的后面,并返回数组的长度 !!!需要的时候注意!!!

arr.unshift()//开头添加一个元素,并返回数组的长度

删除

1
2
3
arr.pop()//删除最后一个元素,并返回该元素的值
arr.shift()//删除第一个元素,并返回该元素的值
arr.splice(起始位置(数组下标从0开始),删除几个元素)//不写第二个参数值,默认从该位置删除到最后

排序

1
2
arr.sort(function(a,b){return a-b})//升序
arr.sort(function(a,b){retrun b-a})//降序

5.常量、变量、数据存储

关键字: const

用法: (相关性质和 c 一样)

1
const pi = 3.14

undefined 声明但是没有赋值的变量,都是未定义类型(语义理解,不是用于定义的)

关键字:typeof 检测变量是什么类型

1
2
3
4
let num=10
console.log(typeof num)
// 控制台输出 number 数字类型
// string 字符型 boolean 布尔类型 undefined 未知类型

​ 隐式转换:

  • 运算符 + 只要有一个是字符串,那么所有变量是字符串相拼

  • 有其他的四则运算符之后,字符串与数字相运算会转换为数字型

  • +’ 312 ‘ 会将字符串转换为数字型

  • 显式转换

    1
    2
    3
    4
    let str='123'
    console.log(Number(str)) //使用Number转换为数字型
    console.log(parseInt('12px')) // 采用 paiseInt从字符串开始截取数字,只能是截取整型
    console.log(parseFloat('12.231px') ) //浮点数截取
    1
    2
    3
    // 确定了数字类型,一般直接转换

    let num = +prompt('输入东西') // 使用前置 + 直接转换

存放内存解释:

  • 简单数据(一般指本身储存值)直接放到
  • 复杂数据(对象,数组等),数据内容放到 里,在 堆内 的地址放到栈里,引用时,先去栈中 获取堆地址,然后去堆中查找值

注意

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
let num1=10
let num2 = num1
num2=20
//结果 num1=10 num2=20

let ha={
age: 10
}
let hb=ha
hb.age=20
//结果 age 都为20

//原因:
/*
前者是存放到栈中的数据,通过 num2 = num1 只是把num1 的数据拷贝了一份到 num2 修改 num2 不会改变 num1 ,因为地址不一样。
后者是存放到堆中的数据,堆中的地址放到了栈中, hb=ha 是拷贝了一份堆中的地址到 hb 中,修改 hb 中的数据会改变 ha 的数据,因为他们的地址都是指向了同一个地方

6.模板字符串

写法: ${变量名}

1
2
3
4
5
6
let age=19
document.write(`我是${age}碎了`) // 引号是反引号,不能改变

//相比
document.write('我是'+age+'碎了')
//更为简洁清晰

7.运算符

== 只判断值是否相等

=== 判断 数据类型 是否都一样

!== 左右两边是否不全等


8、函数

(1)有函数名的函数(必须调用才能执行)

1
2
3
4
5
6
7
8
9
function 函数名(形参1,形参2...){

//可以有返回值,也可以没有
//可以有参数也可没有
}

//如果又返回值: let na=函数名(参数...)
//返回值是多个的时候,写成数组的形式 return [变量1 , 变量2 , ....... ]

该函数可以在函数的上面调用该函数

(2)无函数名的函数(需要调用)

1
2
3
let num = function (形参.....){   
}

该函数只能在其定义的下面调用

(4) 无函数名的函数(无序任何操作,直接运行)

1
2
3
4
5
6
7
8
9
10
//写法 一
(function (形参.....){
//代码块
})( 实参 ); //分号一定要加,避免有两个该函数而导致报错

//写法 二
(function (形参...){
//代码块
}(实参) );

理解方式:

1
2
3
4
5
6
7
8
9
10
function num(形参....){
let num=0
}

//调用:
num(实参...)

//直接函数对比理解
(函数整体)(实参...);//注意该方式的函数写法,要加分号


9.对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
let 对象名 = {
变量名 : 值 , //冒号,逗号不能缺少
//变量名也可以写成字符串的形式如:'name-opa'
}

//例如:
let ha={
name: 'fasd',
soce: 19
}

//增加不存在的变量名:
ha.adress='dongJie'
//删除
delete ha.adress
//修改
ha.name='fasdfa'
//引用
let num=ha.soce

//另一种访问方式 对象名['变量名'] 注意引号一定要有

// 如果变量名是字符串的形式必须用 对象名['变量名'] 的形式进行操作

//总结:如果引用的变量不存在,那么就是增加 ; 如果存在,就是修改

方法 ( java 中的类里面的方法同理 ):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//例如:
let ha={
name: 'fasd',
soce: 19

sing: function(形参...){
//代码块
} , //注意和函数一样,方法之间要用逗号隔开
song : function(){
//代码块
}
}

//调用时
ha.sing(实参....)

遍历:

1
2
3
4
for(let k in ha){
//遍历的时候只能用 对象名['变量名'] 的方法
//因为 k 值是字符串形式
}

js语法基础
https://one-and-one-fourth.github.io/2024/02/03/js语法基础/
作者
一又四分之一
发布于
2024-02-03 21:11:21
更新于
2024-02-15 10:29:05
许可协议