009 *【JS】:JS特点、JS 引擎、JS 组成、JS书写位置、JS 注释、变量命名规范、5中变量、变量类型检测、变量转换、运算符、分支结构、循环

目录

1:JS 特点:(4种语言)

2:游览器引擎(渲染引擎、JS 引擎)

3:JS 构成

4:JS 书写位置

5:JS 注释

 

1:变量命令规范

2:5种变量

3:变量类型检测

4:转 number、转 string、转 boolean

5:运算符

6:分支结构

7:循环

 

正文

一:JS 基础

1:JS 特点

JS 语言的特点
  (1)借鉴C语言的基本语法
  (2)借鉴Java语言的数据类型和内存管理
  (3)借鉴Scheme语言,将函数提升到"第一等公民"(first class)的地位
  (4)借鉴Self语言,使用基于原型(prototype)的继承机制 

 

2:JS 引擎

最初内核的概念包括渲染引擎与JS引擎,目前习惯直接称渲染引擎为内核,JS引擎独立。

游览器  渲染引擎       js 引擎
Safari    WebKit 内核      SquirrelFish(金鳞鱼)
Google  Blink 内核(闪烁)   V8    
IE    Trident 内核(三叉戟)     JScript
Firefox  Gecko内核 (壁虎)    TraceMonkey

 

3:JS 组成

Web标准不是某一个标准,而是由W3C和其他标准化组织制定的一系列标准的集合。

主要包括结构(Structure)、表现(Presentation)和行为(Behavior)三个方面。

结构标准:结构用于对网页元素进行整理和分类,咱们主要学的是HTML。 最重要

表现标准:表现用于设置网页元素的版式、颜色、大小等外观样式,主要指的是CSS。

 行为标准:行为是指网页模型的定义及交互的编写,咱们主要学的是 Javascript

 

4:JS 书写位置

JS 也有多种方式书写,分为  行内式 ,  内嵌式 , 外链式 

 

5:JS 注释

代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS 教程</title>
    <!--  3:外链式  -->
    <script src="index1.js"></script>
    <script>
        // 2: 内嵌式
        alert("弹窗11");
        /* 多行注释 shift+option+A */
    </script>
</head>
<body>

    <div>单行注释 command+/</div>
    <div>多行注释 shift+option+A</div>
    <!-- 1:行内式 -->
    <div onclick="alert('我是一个弹窗')" style="width: 100px; height: 100px; background-color: blue;">点击出弹窗</div>
</body>
</html>

<!--  JS 就是通过固定的语法去操作 浏览器 和 标签结构 来实现网页上的各种效果
1:JS 语言的特点
    (1)借鉴C语言的基本语法
    (2)借鉴Java语言的数据类型和内存管理
    (3)借鉴Scheme语言,将函数提升到"第一等公民"(first class)的地位
    (4)借鉴Self语言,使用基于原型(prototype)的继承机制

2:游览器   渲染引擎  js引擎
    游览器     渲染引擎              js 引擎
    Safari    WebKit 内核           SquirrelFish(金鳞鱼)
    Google    Blink 内核(闪烁)       V8    
    IE       Trident 内核(三叉戟)     JScript
    Firefox  Gecko内核 (壁虎)         TraceMonkey

3:JS 包括什么?
    1. ECMASCRIPT: 定义了javascript的语法规范,描述了语言的基本语法和数据类型
    2. BOM (Browser Object Model): 浏览器对象模型
    - 有一套成熟的可以操作浏览器的 API,通过 BOM 可以操作浏览器。比如: 弹出框、浏览器跳转、获取分辨率等
    3. DOM (Document Object Model): 文档对象模型
     - 有一套成熟的可以操作页面元素的 API,通过 DOM 可以操作页面中的元素。比如: 增加个 div,减少个 div,给 div 换个位置等

4: JavaScript代码的书写位置
    和 css 一样,我们的 JS 也可以有多种方式书写在页面上让其生效
    JS 也有多种方式书写,分为  行内式 ,  内嵌式 , 外链式 
-->

 

二:变量

1:变量的命名规则和变量的规范
规则: 必须遵守的,不遵守就是错
  1. 一个变量名称可以由 数字、字母、英文下划线(_)、美元符号($) 组成
  2. 严格区分大小写
  3. 不能由数字开头
  4. 不能是 保留字 或者 关键字
  5. 不要出现空格
规范: 建议遵守的(开发者默认),不遵守不会报错
  1.变量名尽量有意义(语义化)
  2.遵循驼峰命名规则,由多个单词组成的时候,从第二个单词开始首字母大写
  3.不要使用中文

2: 基本数据类型
  1. 数值类型(number)
    一切数字都是数值类型(包括二进制,十进制,十六进制等)
    NaN(not a number),一个非数字
  2. 字符串类型(string)
    被引号包裹的所有内容(可以是单引号也可以是双引号)
  3. 布尔类型(boolean)
    只有两个(true 或者 false)
  4. null类型(null)
    只有一个,就是 null,表示空的意思
  5. undefined类型(undefined)
    只有一个,就是 undefined,表示没有值的意思

 

代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>变量和变量类型</title>
    <script>
        /* 
        1:变量的命名规则和变量的规范
            规则: 必须遵守的,不遵守就是错
               1. 一个变量名称可以由 数字、字母、英文下划线(_)、美元符号($) 组成
               2. 严格区分大小写
               3. 不能由数字开头
               4. 不能是 保留字 或者 关键字
               5. 不要出现空格
            规范: 建议遵守的(开发者默认),不遵守不会报错
            1.变量名尽量有意义(语义化)
            2.遵循驼峰命名规则,由多个单词组成的时候,从第二个单词开始首字母大写
            3.不要使用中文
        
       2: 基本数据类型 
            1. 数值类型(number)
                一切数字都是数值类型(包括二进制,十进制,十六进制等)
                NaN(not a number),一个非数字
            2. 字符串类型(string)
                 被引号包裹的所有内容(可以是单引号也可以是双引号)
            3. 布尔类型(boolean)
                 只有两个(true 或者 false)
            4. null类型(null)
                 只有一个,就是 null,表示空的意思
            5. undefined类型(undefined)
                 只有一个,就是 undefined,表示没有值的意思   
        */

        var bookName = "js编程";

        //1.基本类型
        /*
          1. Number 18 ,12.5(浮点数),2e3,十六进制,八进制,二进制,
                 NaN
          2. String 字符串类型

          3. Boolean true false
          4. Undefined : undefined
          5. Null: null 无
          6. Symbol
        */

        // 2.复杂类型 - (对象类型)

        // 1: number类型
        // 10进制
        var age = 18
        console.log("--->>>>10进制 int")
        console.log(age)
        console.log(typeof (age))

        // double 类型
        var price = 12.5
        console.log("--->>>>double 类型")
        console.log(price)
        console.log(typeof (price))

        // 科学计数法
        var year = 2e3 // 2*10^3
        console.log("--->>>>科学计数法")
        console.log(year)
        console.log(typeof (year))

        // 16进制
        var a = 0xff // 1-9 ,a,b,c,d,e,f
        console.log("--->>>>16进制")
        console.log(a)
        console.log(typeof (a))

        // 8进制
        var b = 0o77
        console.log("--->>>>8进制")
        console.log(b)
        console.log(typeof (b))

        // 2进制
        var c = 0b11
        console.log("--->>>>2进制")
        console.log(c)
        console.log(typeof (c))


        // 2:string 类型
        var str = "kerwin"
        console.log("--->>>>字符串")
        console.log(str)
        console.log(typeof (str))

        // 3:布尔类型
        var isChecked = false
        console.log("--->>>>布尔类型")
        console.log(isChecked)
        console.log(typeof (isChecked))

        // 4:null类型
        var whichObject = null
        console.log("--->>>>null类型")
        console.log(whichObject)
        console.log(typeof (whichObject))

        whichObject = { name: "kerwin" }
        console.log(whichObject)

        // 5:undefined 未定义
        var which //声明了,但是未赋值
        console.log("--->>>>undefined 未定义")
        console.log(which)
        console.log(typeof (which))
        which = 100
        console.log(which)

    </script>
</head>

<body>
    <div>变量</div>
</body>

</html>

 

3:变量类型检测

代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>变量类型检测</title>
    <script>
        var a = 100
        // 方法一:
        console.log(typeof a) //转成数值 
        // 方法二:
        console.log(typeof(a))

        //结果一定是字符串 string类型
        console.log(typeof typeof a) // string

        console.log(typeof a + 100 ) // number100
        console.log(typeof(a +100) ) // number

        var b = null
        console.log(typeof b) // object
    </script>
</head>
<body>
    
</body>
</html>

详解:

typeof 的结果是字符串,字符串的类型一定是字符串

 

4:数据类型转换

代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>数据类型转换</title>
    <script>
        /* 
        数据类型之间的转换: 其他数据类型转成数值Number(),其他数据类型转成字符串String(),其他数据类型转成布尔Boolean()
        1 其他数据类型转成数值
           1.1: Number(变量)
                可以把一个变量强制转换成数值类型
                可以转换小数,会保留小数
                可以转换布尔值
                遇到不可转换的都会返回 NaN

            1.2:parseInt(变量)
                从第一位开始检查,是数字就转换,知道一个不是数字的内容
                开头就不是数字,那么直接返回 NaN
                不认识小数点,只能保留整数

            1.3:parseFloat(变量)
                从第一位开始检查,是数字就转换,知道一个不是数字的内容
                开头就不是数字,那么直接返回 NaN
                认识一次小数点

            1.4:除了加法以外的数学运算
                运算符两边都是可运算数字才行
                如果运算符任何一遍不是一个可运算数字,那么就会返回 NaN
                加法不可以用

        2 其他数据类型转成字符串  String()  +""  这两种方法都可以转换
            2.1:变量.toString()(不推荐)
                有一些数据类型不能使用 toString() 方法,比如 undefined 和 null
            2.2:String(变量)
                所有数据类型都可以

            2.3:使用加法运算
                在 JS 里面,+ 由两个含义
                字符串拼接: 只要 + 任意一边是字符串,就会进行字符串拼接
                加法运算:只有 + 两边都是数字的时候,才会进行数学运算

        3 其他数据类型转成布尔
            Boolean(变量)
            在 js 中,只有 ''、0、null、undefined、NaN,这些是 false
            其余都是 true
        */


        // 1:其他类型转数值

        // 字符串转number
        var strA = "abc"
        var StrB = Number(strA) // NaN not a number
        console.log(strA, StrB, typeof StrB) // "abc", NaN, number

        // 空字符串   空格 tab 转成 number 的结果是0
        var strC = "    "
        var StrD = Number(strC) // 0
        console.log(strC, StrD, typeof StrB) // "", 0, number

        // boolean转number
        var boolA = false // true false
        var boolB = Number(boolA) // 1 , 0 
        console.log(boolA, boolB, typeof boolB) // false 0 'number'

        // null转number
        var nullA = null 
        var nullB = Number(nullA) // 0 
        console.log(nullA, nullB, typeof(nullB));  // null 0 'number' 

        // undefined转number
        var undefinedA
        var undefinedB = Number(undefinedA) // NaN
        console.log(undefinedA, undefinedB, typeof(undefinedB));  // undefined NaN 'number'


        // 数字开头的字符串:number 转换
        var strE = "123abc" 
        var numf = Number(strE) // NaN
        console.log(strE, numf, typeof(numf)) // 123abc NaN number

        // 数字开头的字符串:parseInt 转换
        var strG = "123abc" 
        var numG = parseInt(strG) // 123
        console.log(strG, numG, typeof(numG)) // 123abc 123 number

        // 数字开头有小数的字符串:parseInt 转换
        var strH = "123.56abc" 
        var numH = parseInt(strH) // 123
        console.log(strH, numH, typeof(numH)) // 123.56abc 123 number

        // 数字开头有小数的字符串:parseFloat 转换
        var strJ = "1.25rem"
        var numJ = parseFloat(strJ)
        console.log(strJ, numJ, typeof(numJ)) // 1.25rem 1.25 number


        // 非加号 -0 /1 *1
        var strI = "100"
        var numI1 = strI-0
        var numI2 = strI*1
        var numI3 = strI/1
        console.log(strI, numI1, numI2, numI3, typeof(numJ)) // 100 100 100 100 number

        // 2:其他类型转字符串 String()  +""  这两种方法都可以转换
        //2.1. String() .所有类型都能转成字符串 

        var intJ = 100;
        var strJ = String(intJ);
        console.log(intJ, strJ); // 100 '100'

        var strN = String(StrB); // 
        console.log(StrB, strN); // NaN 'NaN'

        var intL = false;
        var strL = String(intL);
        console.log(intL, strL); // false 'false'

        var nullM = null;
        var strM = String(nullM);
        console.log(nullM, strM); // null 'null'

        var undefinedO
        var strO = String(undefinedO);
        console.log(undefinedO, strO); // undefined 'undefined'

        // 2.2: toString

        var intJ1 = 100;
        var strJ1 = intJ.toString();
        console.log(intJ1, strJ1); // 100 '100'

        var strN1 = StrB.toString(); 
        console.log(StrB, strN1); // NaN 'NaN'

        var intL1 = false;
        var strL1 = intL1.toString();
        console.log(intL1, strL1); // false 'false'

        // var nullM1 = null;
        // var strM1 = nullM1.toString(); // BaseView.html:142 Uncaught TypeError: Cannot read properties of null (reading 'toString')
        // console.log(nullM1, strM1); 

        // var undefinedO1
        // var strO1 = undefinedO1.toString(); // BaseView.html:146 Uncaught TypeError: Cannot read properties of undefined (reading 'toString')
        // console.log(undefinedO1, strO1); 


        // 2.3 +"" 
        // int 转字符串
        var a = 100
        var b = a+""
        console.log(a,b) // 100 '100'

        var strO = StrB+""; 
        console.log(StrB, strO); // NaN 'NaN'

        var boolP = false
        var strP = boolP+""; 
        console.log(boolP, strP); // false 'false'

        var nullQ = null;
        var strQ = nullQ+"";
        console.log(nullQ, strQ); // null 'null'

        var undefinedR
        var strR = undefinedR+"";
        console.log(undefinedR, strR); // undefined 'undefined'

        // 其他数据类型转 boolean
        var intJ2 = 0;
        var strJ2 = Boolean(intJ2);
        console.log(intJ2, strJ2); // 0 false

        var strN2 = Boolean(StrB); 
        console.log(StrB, strN2); // NaN false

        var str1 = ""; // false
        // var str1 = " "; // true 空格
        // var str1 = "    "; // true tab
        var strL2 = Boolean(str1);
        console.log(str1, strL2); // false 'false'

        var nullM2 = null;
        var strM2 = Boolean(nullM2);
        console.log(nullM2, strM2); // null false

        var undefinedO2
        var strO2 = Boolean(undefinedO2);
        console.log(undefinedO2, strO2); // undefined false

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

详解:

 

空字符串   空格 tab 转成 number 的结果是0
只有 ''、0、null、undefined、NaN,这些是 false

 

 

5:运算符

代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>运算符</title>
    <script>
        /* 运算符      
        1:数学运算符    + - * /  % 取余
        2:赋值运算符    = += -= *= /= %=
        3:比较运算符    == === != !== >= <= > < 
        4:逻辑运算符    &&  || !
        5:自增自减运算符 ++ --
        6:三目运算符
        */

        // 1:数学运算符
        // + - * /  % 取余 
        console.log("--->>>1:数学运算符    + - * /  % 取余")
        var a = 10
        var b = true
        console.log(a + b) // b先转换成 num,之后进行加法,隐式转换


        // 被除数/除数 c商 。。。。余数
        var c = 10
        var d = 3
        console.log(c % d)

        // 1000分钟转成小时
        var e = 1000 // 分钟
        var f = parseInt(e / 60) // 10:20
        var g = e % 60
        console.log(f + ":" + g)// 16+""+40

        // 先计算乘法 "2"*3,字符串2转数字=6,之后字符串拼接
        console.log("1" + "2" * 3 + 4)

        // 2:赋值运算符    = += -= *= /= %=
        console.log("--->>>2:赋值运算符    = += -= *= /= %=")
        var number2 = 5
        number2 += 1 
        console.log(number2)

        var x2 = 10
        x2 %= 3
        console.log(x2)

        // 3:比较运算符    == === != !== >= <= > <
        console.log("--->>>3:比较运算符    == === != !== >= <= > <")
        var age3 =  "22"
        console.log(parseInt(age3)===22) // true
        console.log(true==1) // true
        console.log(""===0) // false
        console.log(undefined==0) // false
        
        var x3 = "6"
        console.log(parseInt(x3)!==6) // false

        // 4:逻辑运算符    &&  || !
        console.log("--->>>4:逻辑运算符    &&  || !")
        var a4 = true
        var b4 = true
        console.log(a4 && b4) // true

        var day4 = 1
        console.log(day4===6 || day4===7)   // false

        var c4 = false
        console.log(!c4) // true

         /*
            特殊:
              1.  !!a  ==>转换成布尔值
              2.  && || 短路 用发
        */
        console.log("--->>>特殊用法")
        var x4 = "1111"
        console.log(!!x4) // true

        var y4 = null
        console.log(y4 && y4.toString()) // null
        console.log(11111) // 11111

        var z4 = ""
        z4 = "赵钱孙李"
        document.write(z4 || "这个家伙很赖,什么也没有留下")

        // 5: 自增自减运算符 ++ --
        console.log("--->>>5: 自增自减运算符 ++ --")
        var number50 = 10
        var number51 = 10
        console.log(++number50, number50) // 前置++ 会返回11,之后把 number50置为11
        console.log(number51++, number51) // 后置++ 会返回10,之后把 number51置为11


        var n = 10
        console.log("--->>>5: 综合运算")
        //  n的值  11   
        //  结果值 11  
        var res = ++n 
        console.log(n,res) // 11 11
        //  n的值   11  12  
        //  结果值  11  11
        n = 10;
        var res = ++n + n++ 
        console.log(n,res)
         //  n的值   11  12  13
        //  结果值  11   11    13
        n = 10;
        var res = ++n + n++ + ++n
        console.log(n,res) // 13 35


        var m = 10
        //  m的值  11  
        //  结果值 10 
        var res = m++
        console.log(m,res)

        var m = 10
        //  m的值  11    10
        //  结果值 10   10 
        var res = m++ + --m 
        console.log(m,res)

        var m = 10
        //  m的值  11    10    9
        //  结果值 10    10    10
        var res = m++ + --m + m--
        console.log(m,res) // 9 30

        // 6:三目运算符
        10<20?console.log(11111):console.log(22222)
    </script>
</head>

<body>

</body>

</html>

详解:

自增自减:自己的结果都必须执行增或者减。之后 n++、++n、n--、--n 的结果不同而已。

 6:分支结构

代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>分支结构</title>
    <script>
        /* 
            分支结构:1:if 语句,2:switch 语句
            1:if语句
                1:if
                2: if else
                3:if else if else

            2:switch case
        */

        // 1:if语句
        var sum = 46
        var youhuisum
        if (sum > 200) {
            youhuisum = sum - 10
        } else if (sum > 100) {
            youhuisum = sum - 5
        } else if (sum > 50) {
            youhuisum = sum - 3
        } else {
            youhuisum = sum
        }
        console.log(sum, youhuisum)

        // 2:switch 语句
        /*
                  订单状态码
                  1 未付款
                  2 已付款
                  3.已发货
                  4.已完成
                */
        var code = 3

        switch (code) {
            case 1:
                document.write("未付款")
                break;
            case 2:
                document.write("已付款")
                break;
            case 3:
                document.write("已发货")
                break;
            case 4:
                document.write("已完成")
                break;
            default:
                document.write("出错了")
        }

        /*
          注意:
           1. ===,是恒等于
           2. 不要比较运算符
           3. break;必须写
        */
    </script>
</head>

<body>

</body>

</html>

详解

 

7:循环

代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>循环</title>
    <style>
        span{
            display: inline-block;
            width: 100px;
            height: 30px;
        }
    </style>
    <script>
        /* 
            1:while循环
            2:dowhile 循环
            3:for循环
            4:break
            5:continue
            6:return
        */

        // 1:while循环
        console.log("--->>>:1:while循环")
        var n1 = 0;
        while (n1 < 10) {
            console.log("li", n1)
            //自身改变,步长
            n1++
        }

        // 2:dowhile 循环
        console.log("--->>>:2:dowhile 循环")
        var n2 = 0
        do {
            console.log("li", n2)
            n2++
        } while (n2 < 10)

        // 3:for循环
        console.log("--->>>:3:for循环")
        for (var n = 1; n <= 10; n++) {
            // console.log(n)
            if (n <= 3) {
                console.log("广告商品", n)
            } else {
                console.log("普通商品", n)
            }
        }
        // 4:break  跳出来当前的循环
        console.log("--->>>:4:break")
        for (var i = 0; i <= 5; i++) {
            if (i === 3) {
                break
            }
            console.log(i)
        }

        // 5:continue   跳过当前的这一次循环,执行下一次循环
        console.log("--->>>:5:continue")
        for (var i = 0; i <= 5; i++) {
            if (i === 3) {
                continue
            }
            console.log(i)
        }

        // 6:return   跳过循环
        function test() {
            console.log("--->>>:6:return   跳过循环")
            for (var i = 0; i <= 5; i++) {
                for (var j = 0; j < 3; j++) {
                    if (i === 3 && j === 1) {
                        // 需要把 return,放到 function 里面
                        // javascript中的return是只能放在function中的
                        return;
                    }
                    console.log(i, j)
                }
            }
        }
        test();

        // 九九乘法表
        for (var m = 1; m <= 9; m++) {
            for (var n = 1; n <= m; n++) {
                document.write("<span>"+m+"*"+n+"="+m*n+"</span>")
            }
            document.write("<br>")
        }
    </script>
</head>

<body>

</body>

</html>

详解:

 

 

引用

 

posted on 2019-09-18 08:38  风zk  阅读(277)  评论(0编辑  收藏  举报

导航