JavaScript基础知识梳理

JS基础语法

由网景(Netscape)公司推出
是一门面向对象的,清亮的,弱类型解释型脚本语言
弱类型:没有数据的限制。
解释型:无需编译,只要是特定的单词,浏览器就可以翻译。

JS写在哪里

1. 写在某个标签当中

例如:

<button onclick="document.write('hello JS')">点击一下 </button>

2.写在Script标签当中

script 标签可以放在内容当中,标签通常写在<head></head>中或者body结束之前
自己写的话最好写在页面中

<script></script>

3.写在单独的文件当中,在通过script标签导入

JS中的输出语句

<!-- 通过浏览器自带的消息提示框输出 -->
		<button onclick="alert('hello javaScript')">点击一下</button>
<!-- 通过控制台输出日志信息 -->
		<button onclick="console.log('hello JavaScript')">再点击一下</button>
<!-- 将输出类容放到页面上 -->
		<button onclick="document.write('hello JS')">点击一下 </button>

JS中的注释

1.单行注释

//单行注释
<!--多行注释-->

/**/

JS的组成

ECMAScript 是一种标准

ECMAScript定义了JavaScript的基本语法。

ECMAScript核心语法

** 数据类型 **

原始类型

JS中的原始类型说明
数值型number整数,小数为数值型
字符串型string单双引号的都是字符串类型
布尔型booleantrue/false
空类型null通过null赋值
未定义类型undefined未声明或没有值

引用类型

对象,数组,函数等

定义类型

var name = "张三";
		var age;
		age=18;
		console.log("name:"+name+"age:"+age);

运算符

JS中的boolean可以用true/1,false/0来表示;

所以可以将true和false当作数来运算

  • 算术
+ - * / %
除了+号外 ,其余都可以做字符运算
  • 关系
> < >= <= == !=关系符号得到的结果是 true 或者 false
'==='比较的是两边的类型和内容是否相同,同为true才是true
'!=='比较值和数据类型
  • 逻辑

    && || |

  • 赋值和符合数值

    = += -= *= /= %=
    如a*=b+c相当于a=a(b+c)
    
  • 自增自减

++ --
符号在前,先+1或-1后使用 反之;
  • 条件

    表达式1?表达式2:表达式3

//java中的while(true)在这里可以写作
while(1){
//表达式
}

条件语句

if语句

  1. 单分支语句

    if(判断条件){
    ...
    }
    
  2. 双分支语句

    if(条件语句){
    ...
    }else{
    ...
    }
    
  3. 多分支语句

    if(条件语句){
    ...
    }else if(条件语句){
    ...
    }...
    else{
    ...
    }
    
  4. 嵌套语句

    if(条件){
    if(条件语句){
    ...
    }
    }
    

switch语句

switch(n)
{
    case 1:
        执行代码块 1
        break;
    case 2:
        执行代码块 2
        break;
    default:case 1case 2 不同时执行的代码
}

注意:JS里的switch里的case后的数据类型可以是不同的,java中的必须是相同类型的case语句;

循环语句

for循环

  • 循环代码块一定的次数

    for (var i=0;i<cars.length;i++)
    { 
        document.write(cars[i] + "<br>");
    }
    

for/in循环

  • 循环遍历对象的属性

    while (条件)
    {
        需要执行的代码
    }
    

while循环

  • 当指定的条件为true时循环指定的代码块

    do
    {
        需要执行的代码
    }
    while (条件);
    

do/wihle循环

  • 同while,指定true时执行指定代码块类容;

javaScript break和continue语句

break

跳出当前循环体,会执行接下来的代码

for (i=0;i<10;i++)
{
    if (i==3)
    {
        break;
    }
    x=x + "The number is " + i + "<br>";
}

continue

它会中断当前循环体,直接结束本次循环,继续下一次迭代循环

while (i < 10){
  if (i == 3){
    i++;    //加入i++不会进入死循环
    continue;
  }
  x= x + "该数字为 " + i + "<br>";
  i++;
}

JS中的数组

js中的数组类似于java中的集合数组

他是一个可变的数组且可以存放不同类型

  • 定义数组的方式

    var 数组名 = new Array();
    var 数组名 = [];
    
  • 默认没有初始化的位置,用undefined填充

  • 最大下标决定了数组长度

  • 可以保存不同类型的数据

  • 遍历数组的两种方式

    1. for循环遍历

      for(var i=0;i<arr.length;i++){
         console.log(arr[i]);
      }
      
    2. 增强for循环

      for(var index in list){
         console.log(list[index])
      }
      
  • 初始化数组

    var list =[123,"asd",true,"qwe"];
    var list = new Array(123,"asd",true,"qwe"];
    

数组常用方法

以下方法在调用时都会影响数组本身

方法名作用返回值
sort()将数组升序排序排序后的数组
reverse()将数组的元素倒序保存倒叙后的数组
pop()移除最后一个元素被去除的元素
push(参数)添加一个元素到数组的末尾更新后的数组的长度
unshift()添加元素到数组头更新后的数组的长度
shift(参数)移除数组头的元素被移除的元素
fill(参数)使用指定参数填充数组填充后的数组
splice(index)从指定位置分割元素截取后的新元素
splice(index , length)指定位置长度的截取数组截取到的数组

以下方法不会影响原数组

方法名作用返回值
indexOf(元素)得到某个元素第一次出现的索引索引
lastindexOf(元素)得到元素最后一次出现的索引索引
concat(元素)将指定元素添加到数组末尾添加后的数组
join(字符)拼接字符到数组中拼接后的数组
slice(start,end)截取start到end之间的数组截取后的数组
map(方法名)让数组执行指定方法执行方法后的新数组

练习

1.分解质因子

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
	</head>
	<body>
		<p id="id"></p>
		<script>
			let n = Number(prompt('输入一个正整数'));
			var m = n;
			var arr = [];
			var flag = 0;
			for (var i = 2; i <= n; i++) {
				if (n % i == 0) {
					arr.push(i)
					n /= i;
					i--;
					flag++;
				}
			}
			let arrNum = arr.join('*');
			if (flag < 2) {
				console.log(m + "就是一个质数");
			} else {
				document.getElementById('id').innerHTML = m + "=" + arrNum;
			}
		</script>
	</body>

</html>

2.java版分解质因子

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        System.out.println("输入所求正整数:");
        Scanner sc = new Scanner(System.in);
        Long n = sc.nextLong();
        long m=n;
        int flag = 0;
        String[] str = new String[50];
        for (long i = 2; i <= n; i++) {
            if (n % i == 0) {
                str[flag] = Long.toString(i);
                flag++;
                n = n / i;
                i--;
            }
        }
        if (flag < 2)
            System.out.println(m + "为质数");
        else {
            System.out.print(m + "=" + str[0]);
            for (int k = 1; k < flag; k++) {
                System.out.print("*" + str[k]);
            }
            System.out.println("\n"+m+"共有"+flag+"个质因数.");
        }
        sc.close();
    }
}

3.输入某一年的某一月,计算这个月有多少天

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
	</head>
	<body>
		<p id="id"></p>
		<script>
			var y = Number(prompt("请输入年份:"));
			var m = Number(prompt("请输入月份:"));
			var d;
			if (y % 4 == 0 || y % 100 == 0);
			switch (m) {
				case 1:
					d = 31;
					break;
				case 2:
					if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0) {
						d = 28;
					} else {
						d = 29;
					}
					break
				case 3:
					d = 31;
					break;
				case 4:
					d = 30;
					break;
				case 5:
					d = 31;
					break;
				case 6:
					d = 30;
					break;
				case 7:
					d = 31;
					break;
				case 8:
					d = 31;
					break;
				case 9:
					d = 30;
					break;
				case 10:
					d = 31;
					break;
				case 11:
					d = 30;
					break;
				case 12:
					d = 31;
					break;
				default:
					console.log("没有这一天")
			}
			document.getElementById("id").innerHTML = y + "年的" + m + "月有" + d + "天";
		</script>
	</body>
</html>

4.冒泡排序

<script>
			var flag = 0;
			var arr = new Array(12, 15, 65, 54, 33);
			for (var i = 0; i < arr.length; i++) {
				for (var j = 0; j < arr.length; j++) {
					if (arr[j - 1] > arr[j]) {
						flag = arr[j - 1];
						arr[j - 1] = arr[j];
						arr[j] = flag;
					}
				}
			}
			for (var i = 0; i < arr.length; i++) {
				console.log(arr[i]);
			}
		</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值