JavaScript学习笔记08

一、模板字符串

模板语法 `${变量}`
作用:
        1.字符串拼接
        2.换行输出,不用连接符

    <script>
        var msg='world'
        var str=`hello:${msg}`
        console.log(str) //hello:world

        //字符串拼接
        function test1(){
            var a=10
            var b=20
            var c=`${a}+${b}=${a+b}`
            console.log(c)
        }
        test1()

        //换行
        function test2(){
            var title = `模板字符串`
            var str = `<div>
                        <h3>${title}</h3>
                        <p>作用</p>
                       </div>`
            document.write(str)
        }
        test2()
    </script>

 

 二、严格模式

不严格体现:
        1.变量不声明也能使用
        2.函数形参可以重复,但是后面会覆盖前面

开启严格模式:
        'use strict'
        开启之后不规范会报错

<script>
    'use strict'
    num = 10 
    console.log(num)//未声明变量,会报错,必须先声明再使用

    function test(a, a, b){
        console.log(a)
        console.log(b)
    }
    test(10, 20, 30)//报错,严格模式下函数参数不能重名,非严格模式输出20,30(重复,后面覆盖前面)
    //报错信息为:Uncaught SyntaxError: duplicate formal argument a
</script>

Q:为什么要使用严格模式?

A:  1.消除代码运行的一些不安全之处,保证代码运行的安全;

        2.提高编译器效率,增加运行速度;

        3.为未来新版本的Javascript做好铺垫。

三、ASCII码

        计算机只能存储 0101010 这样的二进制数字。我们可以简单的理解为, a ~ z / A ~ Z / $ / @ /… 之类的内容都有一个自己的编号,然后在计算机存储的时候是存储的这些编号,我们看的时候,也是通过这些编号再解析成我们要看到的内容给我们看到。

(图片来源于网络)

ASCll码只支持拉丁文(包含英文), 中文会乱码。

其他编码还有:

        1.GBK

                汉字内码扩展规范,共收录了21003个汉字,中文简体编码。

        2.Unicode编码

        我们看到,ASCII 码只有这 128 个字符的编码结构,但是因为 ASCII 出现的比较早,而且是美国发明的,早些时候这些内容就够用了,但对于世界来说是不够用的,所以就出现了 unicode 编码(也叫万国码,统一码)。

        unicode 对照表就是一个和 ASCII 一样的对照表,只不过变得很大很大,因为存储的内容特别的多,而且包含了世界上大部分国家的文字,所以我们的文字和字符现在存储的时候,都是按照 unicode 编码转换成数字进行存储。UTF-8 就是一种 8 位的unicode字符集。

charCodeAt()方法:

        charCodeAt(索引)就是返回对应索引位置的unicode编码。

        示例:编写一个方法,求一个字符串的字节长度。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>字符串字节长度</title>
    <!--
        编写一个方法,求一个字符串的字节长度。一个英文字符占用一个字节,一个中文字符占用两个字节
            提示:中文字符unicode编码大于255
                字符unicode编码
                str.charCodeAt(0)
            如'jt编程实现学生表格显示'
                分析:
                    初始化统计字节个数变量 count=0
                    循环遍历字符串
                        判断当前字符unicode编码是否大于255
                        如果大于count+=2
                        如果小于count+=1
    -->
</head>
<body>
    <script>
        var str = 'js编程实现学生表格显示' 
        var count = 0
        for(var i=0;i<str.length;i++){
            if(str.charCodeAt(i)>255){
                count += 2
            }else{
                count += 1
            }
        }
        document.write('字符串中字节个数是 '+count)  //输出:字符串中字节个数是 22 
        // console.log(str[0],' ',str.charCodeAt(0)) //106,j在Unicode编码里的十进制数表示为106
        // console.log(str[3],' ',str.charCodeAt(3)) //31243
    </script>
</body>
</html>

四、简单对象Object补充

        在JavaScript中,可以使用“ . ”和“ [ ] ”来访问对象的属性。二者区别:“ . ”表示法一般作为静态对象使用时来存取属性。而“[ ]”表示法在动态存取属性时就非常有用。

        遍历对象的方法:for in

for-in 遍历对象
            语法:
            for(var key in obj){
                //key属性
                //obj[key]
            }

        for-in 可以循环遍历对象,数组,字符串。

        遍历对象 访问对象属性,

        遍历数组,访问数组索引号,

        遍历字符串,访问字符串索引号

  练习:统计字符串中每个字符出现的次数。

<script>
    /*
            1.定义一个空对象存储字符出现次数,属性名是字符,属性值对应字符出现次数《a:2,b:3...}
            2.  var obj ={}
                obj.a =1 (a:1)
                obj.b = 1
                3.循环遍字符串
                    判断obj对象中是否已经有该字符
                    如果有值加一
                    如没有,作为新属性添加,值赋值为1
        */
    // 统计字符串中每个字符出现的次数
    function getCountString() {
        var str = 'abcdefabcadefkmmkggcc'
        var obj = {} //存储各个半符出现次教
        //循环遍历字符串
        for (var i = 0; i < str.length; i++) {
            var chars = str.charAt(i) // a
            //判断obj对象中是否已经有该字符
            //尚对象属性是变量时,通守中括号访问
            if (obj[chars]) {
                obj[chars]++
            } else {
                obj[chars] = 1
            }
        }
        // 遍历对象for-in
        for (var key in obj) {
            console.log('key:', key + ' value:', obj[key])
        }
    }
    getCountString()
</script>

五、Math

       1.处理数学问题
       2.创建方式
            不需要使用构造函数创建,它比较特殊,直接使用就可以,像这样的对象称为类对象。
            Math.方法()

        3.方法:
        random 随机数
        ceil 向上取整 整数部分加1
        floor 向下取整 整数部分减1
        round 四舍五入
        abs 绝对值
        max 最大值
        min 最小值
        pow(x,y) x的y次幂
        sqrt(x,y) x开y次根
        ……

        示例1:生成10000个0~10的随机数,统计每个随机数出现次数。

<script>
    /*
        生成10000个0~10的随机数,统计每个随机数出现次数
        分析:
            1. 0~10随机数
                Math.random()     0~1
                Math.random()*10  0~10
            2.循环10000次
            3.统计每个随机数出现次数
    */
    var obj={} //记录随机数出现次数,名称:随机数  值:次数
    for(var i=0;i<10000;i++){
        var r=Math.floor(Math.random()*10)
        if(obj[r]){
            obj[r]++
        }else{
            obj[r]=1
        }
    }
    console.log(obj)
</script>

         示例2:m~n的随机数。

<!--  m~n的随机数:Math.floor(Math.random()*(n-m)+m)  -->
<script>
    function getRandom(x,y){
        var n=Math.max(x,y)
        var m=Math.min(x,y)
        return Math.floor(Math.random()*(n-m)+m)
    }
    var r=getRandom(10,20)
    document.write(r) 
</script>

         示例:小数取整。

<script>
    var num = 10.1
    var num1=10.9
    console.log(Math.ceil(num)) //11
    console.log(Math.ceil(num1)) //11

    console.log(Math.floor(num)) //10
    console.log(Math.floor(num1)) //10

    console.log(Math.round(num)) //10
    console.log(Math.round(num1)) //11
</script>

        示例:绝对值、最大最小值

<script>
    console.log(Math.max(1,2,3,4,5)) //5
    console.log(Math.min(1,2,3,4,5)) //1
    console.log(Math.abs(-3)) //3
</script>

        实例对象 和 类对象:

var obj = new Object()

var obj = {}

obj就是实例对象

Math 类对象

六、数字转换进制

        进制转换:
        1.十进制转其他进制
            toString(进制)
            十进制数除以进制,倒着取余数
        2.其他进制转十进制
            parseInt(数字,进制) 

<script>
    function test1(){
        var num = 010   // 编程时八进制前加0
        var num1 = 0x11 //0x 十六进制
        console.log(num, num1)
    }

    //十进制转其他进制
    function test2(){
        var num = 100
        console.log('二进制 :', num.toString(2) )
        console.log('八进制 :', num.toString(8) )
        console.log('十六进制 :', num.toString(16) )
    }
    test2()
    //其他进制转十进制
    function test3(){
        var num = 100
        console.log( parseInt(num, 2) )
        console.log( parseInt(num, 8) )
        console.log( parseInt(num, 16) )
    }
    test3()
</script>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值