JavaScript

  1. 页面中引入 JS 代码的三种方式:

  1. 内联(行内)写法:

    1. 位置:写在对应的 HTML 元素上

    2. 作用:可以给元素添加 JS 事件代码,触发事件执行对应效果

    3. 事件:指系统提供的一系列状态

      • onclick 点击事件,点击此元素时才会触发

      • alert(666) 弹出警告框

<button onclick="alert('请先登录!')">点击即玩</button>

 

  1. 内部写法:

    1. 位置:在页面任意位置添加 script 标签,在 script 标签中添加 JS 代码

    2. 建议写在 body 结束标签之前!

<script>
    //将内容输出到浏览器控制台
    console.log("Hello World!");
    console.log(d1);
</script>

 

  • 外部写法:

    • 位置:写在单独的 js 文件中,在 head 标签中添加 script 标签引入外部的 js 文件

    • 注意:若此 script 标签用于引入外部的 JS 文件,则标签中不能写 JS 代码,不会执行

<script src="01.js">
    console.log("Hello World!666");//不会执行!
</script>

 

  1. 变量与常量

  • JS 语言是弱类型语言,声明变量不需要指定类型

  • 在 JS 中,使用 var let 声明变量

    • var 声明的变量,全局作用域,var声明的变量还可以重复声明

    • let 声明的变量,作用域类似Java 语言中的局部变量, 块级作用域【推荐使用】

    • 可以使用 typeof 变量名 去查看对应的类型

  • 在 JS 中,使用 const 声明常量,常量的值不允许被修改!

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>变量与常量</title>
</head>
<body>
    <script>
        //JS是一门弱类型语言,不需要指定变量的数据类型
        //1.使用var关键字声明变量
        var a = 10;//number 整数+小数
        var b = 3.14;//number
        var c = '你好!';//string 单引+双引
        var d = "你好呀!";//string
        var e = true;//boolean true+false
        console.log(a,b,c,d,e);
        //typeof 查看变量的数据类型 根据值去推断数据类型
        console.log(typeof a,typeof b,typeof c,typeof d,typeof e);

        a = 3.14;
        console.log(a,typeof a);//可以修改值
        a = false;
        console.log(a,typeof a);//可以修改类型
        var a = '哈哈哈我又来了';
        console.log(a,typeof a);//可以重复声明

        let x = 1;
        console.log(x,typeof x);
        x= 6.6;
        console.log(x,typeof x);
        //let x = false;
        //console.log(x,typeof x);//let声明的变量不可以重复声明,报错:变量已被声明

        const y = 1;
        console.log(y,typeof y);
        //y = 343;//常量的值不允许被修改

    </script>
</body>
</html>

 

  1. 常用数据类型

原始数据类型

  • 字符串(string):没有字符的概念,使用单引号或双引号包裹均可

  • 数字(number):包含整数与小数类型

  • 布尔(boolean):值只有 true 与 false

  • 未定义(undefined):Java 声明变量必须声明类型,但 JS 是弱类型语言,若声明变量未赋值就不清楚数据类型

  • 空(null):结合后面的引用类型使用

引用类型

  • 对象(Object)

  • 数组(Array)

  • 函数(Function)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JS数据类型</title>
</head>
<body>
<script>
    //JS数据类型
    //原始类型 string number boolean undefined null
    var a = 1;
    var b = 6.6;
    console.log(a,typeof a);
    console.log(b,typeof b);
    var c = '下午';
    var d = "好多个字";
    console.log(c,typeof c);
    console.log(d,typeof d);
    var e = true;
    var f = false;
    console.log(e,typeof e);
    console.log(f,typeof f);

    //声明了变量,但未赋值,会得到undefined,未定义型
    var g;
    console.log(g,typeof g);//undefined 'undefined'

    //引用类型 Object Number Boolean Function Array...
    //1)定义JS对象
    let obj = {
        //属性名:属性值 多对值之间使用逗号隔开
        name:'张三',
        age:18
    };
    console.log(obj,typeof obj);//{name: '张三', age: 18} 'object'
    console.log(obj.name);//'张三'
    console.log(obj.age);//18

    obj.age = 19;//age属性存在,赋值是修改对象该属性的值
    console.log(obj.age);//19
    /* 给对象动态新增一个属性like */
    obj.like = '吃冰棍';//like属性不存在,赋值是给对象新增一个属性
    console.log(obj);
    console.log(obj.like);

    /*访问对象不存在的属性会得到undefined*/
    //如果该属性没有赋值,还是undefined
    console.log(obj.play);//undefined

    //JS数组
    let arr = ['李逵','鲁班','后羿',1,6.6,true];
    console.log(arr,typeof arr);
    console.log(arr[0]);
    console.log(arr[5]);
    console.log(arr[99]);/*访问数组不存在的下标,结果还是undefined*/
</script>
</body>
</html>

 

  1. 运算符

  1. 算术运算符:+ - * / %

  • 除法会自动根据结果转换为整数或小数

  - Java: 
int x = 5; int y = 2; 
int z = x/y 
z=2



  - JS: 
let x = 5; let y = 2; 
let z = x/y; 
z=2.5 自动变为小数
若x变为6:z=3 自动变为整数

 

  1. 关系运算符:> < >= <= != =====

  • ==:松散比较运算符:只比较等号左右两边的,如:"666"==666 结果为 true

  • ===:严格比较运算符:先比较类型,类型相同后再比较,如:"666"===666 结果为 false

  1. 逻辑运算符:&&||

  1. 赋值运算符:= += -= *= /= %=

  1. 三目运算符:条件?值 1:值 2

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JS运算符</title>
</head>
<body>
<script>
    //如果比较运算符左右两边有数字,会转为数字再进行比较
    console.log(3>10);
    console.log('3'>10);
    console.log(3>'10');
    //如果比较运算符左右两边都是字符串,会比较它们的编码值
    console.log('3'>'10');//51>49=>true
    /* '3'.charCodeAt()查看字符的编码值 */
    console.log('3'.charCodeAt());//51
    console.log('10'.charCodeAt());//49
    //console.log('超'>'博');

    //除法会按照实际结果显示结果
    console.log(6/2);//3
    console.log(3/2);//1.5

    let a = 1;
    let b = true;
    //松散比较运算符,只比较值,Number(true)=1
    console.log(a == b);//true
    //严格比较运算符,先比较类型,再比较值 number ≠ boolean
    console.log(a === b);//false

    //Number() 将参数转为数字,如果得不到数字结果,就是NaN(Not a Number)
    //Boolean()
    //以下五个特殊值转为布尔都是false
    console.log(Boolean(false));
    console.log(Boolean(0));
    console.log(Boolean(''));
    console.log(Boolean(undefined));
    console.log(Boolean(null));

    //三元运算符 1
    let c = 0;
    console.log(c==0 ? 'YES' : 'NO');//'YES'
    //=是赋值符号,给c赋值为0,Boolean(0)=false,所以取3号位置的值'NO'
    console.log(c=0 ? 'YES' : 'NO');//'NO'
</script>
</body>
</html>

 

  1. 流程控制

  1. 分支语句:(与 Java 一致)

  • if 单分支结构

  • if-else 双分支结构

  • if-else-if 嵌套分支

  1. switch-case 选择分支

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>05JS流程控制</title>
</head>
<body>
<script>
    //1.顺序结构
    console.log(1);
    console.log(2);
    console.log(3);
    console.log(4);
    //2.分支结构
    let username = '露娜';
    if(!username){
        alert('请输入用户名!');
    }else{
        alert('欢迎'+username+'回来!')
    }
    //3.选择分支
    let gender = 777;
    switch (gender){
        case 1:
            console.log('先生');
            break;
        case 0:
            console.log('女士');
            break;
        default:
            console.log('保密');
    }
</script>
</body>
</html>

 

  1. for 循环语句

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>流程控制</title>
</head>
<body>
  <script>
//4.循环结构
let names = ['张三','李四','王五','赵六','钱七'];
for(var i = 0;i< names.length ; i++){
    console.log(names[i]);
}
//如果是用var声明的循环变量i,此处可以打印,看作全局变量
//如果是用let声明的循环变量i,此处无法使用,看作局部变量
//console.log(i);

//增强for循环
//names是当前需要遍历的集合/数组
//let n 表示本轮循环到的元素
for(let n of names){
    console.log(n);
}
  </script>
</body>
</html>

 帮大家回忆下Java的写法:

import java.util.ArrayList;

public class TestDemo {
    public static void main(String[] args) {
        ArrayList<Person> persons = new ArrayList<>();
        Person p1 = new Person("张三",3);
        Person p2 = new Person("李四",4);
        Person p3 = new Person("王五",5);
        persons.add(p1);
        persons.add(p2);
        persons.add(p3);
        //增强for循环
        for(Person p : persons){
            p.eat(p.name,p.age);
        }
    }
}
class Person {
    String name;
    int age;
    void eat(String name,int age){
        System.out.println(name+"练了"+age+"年Java");
    }
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

 所以后面的JS循环结构也可以写成这样:

<script>
var person1 ={
    name: "张三",
    say: function(name){
        console.log(name+'你好');
    }
};
var person2 ={
    name: "李四",
    say: function(name){
        console.log(name+'你好');
    }
};
var person3 ={
    name: "王五",
    say: function(name){
        console.log(name+'你好');
    }
};
var persons = [person1,person2,person3];
for(let p of persons){
    console.log(p.name)
    p.say(p.name);
}
</script>

 

  1. 方法

Java 语言的方法和 JavaScript 的方法对比

  • Java: public 返回值类型 方法名(参数列表){方法体}

  • JavaScript: function 方法名(参数列表){方法体}

三种定义方法的方式:

  • function 方法名参数列表){方法体}

  • let 方法名 = function(参数列表){方法体}

  • const 方法名 = (参数列表)=>{方法体}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>06函数</title>
</head>
<body>
<script>
    //1.JS通过function关键字来定义函数
    function f1(){
        console.log('f1');
    }
    f1();
    //2.带参数的函数
    function f2(n){//形参
        console.log('今日星期一'+n);
    }
    f2('中午吃什么?');//实参
    f2(666);
    f2(false);
    //3.形参与实参的个数问题
    function f3(x,y){
        console.log(x+y);
    }
    f3(3,10);//13
    f3(3);//3+undefined=NaN 未被赋值的形参值为undefined
    f3(3,4,5);//3+4=7 多余的实参会被舍弃

    //4.arguments用来保存调用函数时传入的实参,可以看到实参的个数与值
    function f4(){
        console.log(arguments);
    }
    f4(50);//Arguments[50,...]
    f4(50,60);//Arguments(2)[50, 60, ...]
    f4(50,60,70);//Arguments(3)[50, 60, 70, ...]

    //5.函数的返回值
    function f5(a,b){
        return a+b;
    }
    var res = f5(3,4);
    console.log(res);//将函数return的结果保存在res变量中,再打印出来
    console.log(f5(3,4));//直接打印调用f5函数时return的结果

    //函数的第二种声明方式:
    //将函数整体交给变量f6来保存,调用时使用变量名调用即可
    var f6 = function(){
        console.log('f6');
    }
    console.log(typeof f6);//function
    console.log(f6);//f(){ console.log('f6'); }
    f6();//f6

    //箭头函数
    const f7 = (n)=>{
        console.log('箭头函数'+n);
    }
    f7('你好');
</script>
</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值