Javascript初学一

169 阅读8分钟

一 js基础

1-1. Javascript是什么

  • JavaScript 是世界上最流行的语言之一,是一种运行在客户端的脚本语言 (Script 是脚本的意思)
  • 脚本语言:不需要编译,运行过程中由 js 解释器( js 引擎)逐行来进行解释并执行
  • 现在也可以基于 Node.js 技术进行服务器端编程 !

1-2.Javascript的作用

  • 表单动态校验(密码强度检测) ( JS 产生最初的目的 )
  • 网页特效
  • 服务端开发(Node.js)
  • 桌面程序(Electron)
  • App(Cordova)
  • 控制硬件-物联网(Ruff)
  • 游戏开发(cocos2d-js)

1-3.js与html/css 有什么关系

  • html是页面的骨架
  • css主要是样式修饰页面
  • js是进行交互的,实现业务逻辑和页面控制

1-4.Javascript组成?

  • javascript: ECMA标准、DOM、BOM
  • ECMA是来定义了javascript的基础语法
  • DOM 文本文档对象模型
  • BOM 浏览器窗口模型

二 Javascript学习

2-1.输出方式

  • alert()
  • prompt()
  • console.log() --需要打开控制台查看输出结果

2-2.引入方式

  • 行内式
<button onclick="alert('helloworld!!')">点击</button>
  • 嵌入式
<script>
        // 写js代码
        alert("helloworld!!!")
</script>
  • 外部引入
   //先在文件夹里创建一个js文件,后缀为.js
    <script src="./test.js"></script>

2-3.变量

  • 变量是用来存储数据的容器。我们可以通过变量名称获取数据修改数据!!!
  • 变量的声明 var是关键词, variable
 var age; 
 // 变量的赋值
  age = 10; 

 // 变量的初始化
 var age = 10;
 // 后台输出变量值
 console.log(age)

2-4.变量的命名

  • 由字符、数字、下划线、美元符号组成
  • 不能以数字开头
  • 不能是关键字、保留字
  • 严格区分大小写
  • 变量的定义最好有一定的意义
  • 建议使用驼峰命名法进行命名
<script>
  var age = 10;
  //这两个不同,区分大小写
  var Age = 20;
  
  // var var = 20;不能使用关键字命名!!!
  var myTest = 10;//驼峰命名法,一般后面的单词首字母大写
  alert(myTest)
  </script>

2-5.数据类型

 <script>
      
        var age = 20; // 20是数字类型
        var name = "名字"; // 是字符串类型,需要用“”
    </script>
  • 数字类型
<script>
     var num1 = 10;
     var num2 = 20;
      var num3 = 0xa;
     // 进制之间的转换
     //  数字的范围
     // var num4 = ; 最大不能超过9007199254740992 
     // isNaN == 判断是否不是一个数字
      console.log(isNaN(num1)) // 打印出来false(错误) isNot a Number
    </script>
  • 字符串类型
 <script>
        // 1.在定义字符串时,单引号和双引号都是可以的!!!
        var string1 = "中国加油";
        var string2 = "武汉加油";
        var string3 = '你好世界';
        //在遇到 ""里面有 ''或者 "" 的时候需要用到转义字符
        
        // 2.字符串的转义字符
        // \n == 换行
        // \\ 代表一个反斜线字符''\'
        // \"  代表一个双引号字符
        // \'代表一个单引号(撇号)字符
        // \t  tab 空格
        // \b 
        // var string4 = "这是一个'激动人心'的时刻" 
        var string4 = "这是一个\"激动人心\"的时刻"
        // 显示结果   这是一个激动人心的时刻
        var string5 = "锄禾日当午,\n汗滴禾下土"
       <!--显示结果   锄禾日当午,-->
       <!--           汗滴禾下土-->

        // 3.字符串的长度
        var string6 = "1234567890!"
        console.log(string6.length)
    
        // 4.字符串拼接
        var string7 = "锄禾日当午";
        var string8 = "汗滴禾下土";
        console.log(string7+string8)
        // 显示结果   锄禾日当午汗滴禾下土
    </script>
  • 布尔值类型
 <script>
        // 布尔值类型  truefalse
        // truefalse 假
        // 布尔值和数字相加时 true = 1 , false = 0;
   
    </script>
  • 其他数据类型
<script>
        // undefined 没有被定义的意思,这种一种数据类型!!!
        var name;
        console.log("你好" + name)
      // null也是一种数据类型!!!
        var age = null; 
        console.log(111 + age)

        // 当数字和字符串进行拼接时,会将数字自动转换成字符串!!!
        console.log(111 + "您好")

        // 当字符串数字和数字想减时,就会自动将字符串数字转换成数字!!!
        console.log("110" - 9);

        // NaN == not a number 非数字值的特殊值。该属性用于指示某个值不是数字。
        console.log("你好" - 10);
    </script>

2-6.检测变量的数据类型

<script>
        var str = "中国加油";
        var a;
        var b = null;
        // typeof  使用方法 typeof 变量名称
        console.log(typeof str)  //string
        console.log(typeof 110) // number
        console.log(typeof true) // boolean
        console.log(typeof a)  // undefined
        console.log(typeof null) // object
    </script>

转换数据类型

  • 转换成字符串类型
  <script>
        // string number boolean object undefined
        var num = 10;
        //隐式转换
        console.log("您的数字为:" + num);

        // 显式转换
        var num = 10;
        // .toString() String()
        console.log(num.toString())
        console.log(String(num))
    </script>

2-7.字面量

  • var a = 10 ;
  • console.log(18);
  • 以上10 和 18 都属于字面量

三 Javascript中运算符

3-1.算数运算符

   <script>
 //   加减乘除 + - * /
        console.log(1 + 1);
        console.log(1 - 1);
        console.log(1 * 1);
        console.log(1 / 1);
 // % 取余
        console.log(4 % 2); // 0
        console.log(5 % 2); // 1
        console.log(3 % 5); // 3

 // 浮点数 float 

        // 非常重要的面试题!!!

        console.log(0.1 + 0.2); //输出显示 0.30000000000000004
      // 在编程语言里面进行计算,是要先将0.1 二进制 0.2 二进制
     // 二进制 + 二进制 = 二进制 => 十进制!!!
        var num1 = 0.1;
        var num2 = 0.2;
        var str1 = num1.toString(2)
        // console.log(str1)  // 0.0001100110011001100110011001100110011001100110011001101
        var str2 = num2.toString(2);
        // console.log(str2) // 0.001100110011001100110011001100110011001100110011001101

        // 在javascript中最大值的存储位数为53位,
        // 需要将多余的位数进行截取,截取之后才能进行二进制相加
        // 溢出!!!
        // 0.30000000000000004
        console.log(str1.length)//57位
        console.log(str2.length)//56位

    </script>

  • 递增递减运算符++ --
 <script>
 // 递增
        var age1 = 1;
        age1++; // age1 = age1 + 1; 
        console.log(age1) //输出 2
      
        var age2 = 1;
        ++age2;
        console.log(age2) // 2
// 递减
     var age3 = 1;
        age3--; // age3 = age3 - 1; 
        console.log(age3) // 0
      
        var age3 = 1;
        --age3;
        console.log(age3) // 0
    </script>
    
  • ++age和age++的区别
<script>
        var num = 10;
        var num = num++;
        // var num2 = num++; // num++ ,会先进行赋值,然后进行 ++
  
        // 区别就是 ++num, 先进行计算++,然后再赋值。num++,先赋值再进行++
        console.log(num1) // 10
        console.log(num2) // 11

        var age = 10;
        console.log(age++ + 10); // 20 . 先进行 10 + 10;  然后再计算age++ = 11
        // console.log(++age + 10); // 21 . 先进行++age = 11;  然后再计++age + 10 = 21
        console.log(age) // 11
    </script>

3-2.表达式

  • 比如var num = 1+1; console.log(1+1)等诸如此类的带有运算符的表达式。

3-3.比较运算符

 <script>
        console.log(3 >= 5); // 输出布尔值false
        console.log(10 >= 5); // 输出布尔值true

        // >=(大于等于) <=(小于等于) >(大于) <(小于) ==(等于) !=(不等于)
        ===(三个等于号,不仅要判断数值,而且要判断数据类型!!!)
        !==(先比较===, 再加上!比较)
        console.log(3 == 5); // false
        console.log("张三" == "李四")// false
        console.log(18 == 18); //true
        console.log(18 ==  "18")// true 前面是一个数字,后面是字符串!!!
        console.log(15 != 18)// false


        //  === 三个等于号,不仅要判断数值,而且要判断数据类型!!!
        console.log(18 === "18") // false

        console.log(18 !== "18") // 18 === "18"(!false)=>true
    </script>

3-4.逻辑运算符

  • 逻辑运算符
 // && || !
        // 1.&& 并且 and
        // 如果想要整体打印出true,&& 两边都要为true,如果有一边为false,那么打印出来就是false
        console.log(5 > 3 && 10 > 5) // true
        console.log(3 < 5 && 3 > 2); // true

        // 2. || 或者 or , 如果想要整体打印出true,|| 两边只要有一个为true就打印true,如果两个都为false,
        // false
        console.log(3 > 5 || 3 > 6); //false

        console.log(3 > 5 || 3 < 10); // true

        // 3. ! 非 not
        console.log(!(3 > 5));
  • 逻辑运算符中断
        // 1.true && false
        // 2. 数字 && 数字 数字 && 字符串
        // 3. 数字 || 数字

        // 1)逻辑与的短路运算
        //如果表达式1结果为真,则返回表达式2
        // 如果表达式1结果为假,则返回表达式1
        console.log(110 && 120); // 120
        console.log(0 && 456); // 0
        console.log(0 && 1 + 2 && 456 * 56789); // 0

        // 2)逻辑或的短路运算
        // 如果表达式1为真,则直接返回表达式1
        // 如果表达式1为假,则返回表达式2
        console.log(123 || 456)//123
        console.log(123 || 456 || 456 + 789)//123
        console.log(0 || 456 || 456 + 789); //456
    </script>

3-5.赋值运算符

<script>
        var num = 10;
        num += 2; // num = num + 2;
        num -= 2; // num = num - 2;
        num *= 2; // num = num * 2;
        num /= 2; // num = num / 2;
        num %= 2; // num = num % 2;
 </script>

3-6.运算符的优先级

 // 算术运算符 、 比较运算、逻辑、赋值
        // 1 -- 括号()
        // 2.一元运算符  ++ -- ! 
        // 3.算术运算符 + - * /
        // 4.关系运算符 > < =
        // 5.相等运算符 == != === !==
        // 6.逻辑运算符 && ||    先 && 后 ||
        // 7.赋值 =
   
   
                   // false          true              true          true
        console.log(4 >= 6 || '张三' != '李四' && !(12 * 2 == 144) && true)// true
     
    </script>

3-7.按位运算符

<script>
        // 1.左移 右移
        // 2.& | 
        var num1 = 1;
        // << 左移两位
        var num2 = num1 << 2;
        var num3 = num2 >> 1;
        console.log(num2)
        console.log(num3)

        var num4 = 10;
        // 00001010
        var num5 = 20;
        // 00010100 
        // 00011110
        // & 的意思就是如果都为1则为1,如果有一个不为1,则为0
        var num6 = num4 | num5;
        console.log(num6)//30
    </script>

3-8.if判断语句

  • if else
 <script>
 var age = prompt("请输入您的年龄:");
 //先判断if(条件)里面的条件
 //是则输出"成年了!"
 //否则输出"未成年!"
        if(age >= 18) {
          console.log("成年了!")
        }else{
            console.log("未成年!")
        }
 </script>

else if

  <script>
  //符合那个条件就会输出哪个
        if(条件表达式1) {
            console.log()
        }else if(条件表达式2) {
            console.log("")
        }else if(条件表达式3) {
            console.log("...")
        }else {
            // 
        }
  • switch分支
<script>
        // ifelse ifelse 
        // switch 语法不一样,执行性能更高
        var str = prompt("");
        // str和case 后面的数值不仅要一样,而且类型也要一样!!!
 
        switch (str) {
            case "苹果":
                console.log("苹果7块一斤!!")
                // break 断开!!! 每一个分支都要加上break!!!!!!!!!!!!!
                break;
            case "香蕉":
                console.log("香蕉10块钱一斤!!!")
                break;
            case "口罩":
                console.log("口罩7块一个!!!!");
                break;
            case '10': 
                console.log("这是一个数字");
                break;
            default:
                console.log("没有匹配到任何一个结果")
                break;
        }
    </script>

3-9.三元运算符

  <script>
        // 语法结构
        // 表达式1 ? 表达式2: 表达式3
        // 表达式1如果为true, 则返回表达式2,否则返回表达式3
        var num = 10;
        var num2 = num >= 20 ? 10: num;
        console.log(num2)//10
    </script>