JavaScript笔记-基本语法

JavaScript笔记-基本语法

​ 本文主要是看了廖雪峰老师的教程,跟着敲,给自己看的笔记了。教程地址:https://www.liaoxuefeng.com/wiki/1022910821149312

基本数据类型

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>数据类型的展示</title>
</head>
<body>

<script>
    var num=12;//Number类型
    var str="我是string"//String类型
    var nll=null;//Object类型,空
    var obj=new Object()//Object类型
    var bol=true;//boolean类型
    var undef;//未定义的为Undefined类型

    //展示这些数据
    console.log(typeof num);
    console.log(typeof str);
    console.log(typeof nll);
    console.log(typeof obj);
    console.log(typeof bol);
    console.log(typeof undef);

    //Number类型数据
    console.log("Number类型数据的运算:");
    console.log(3+2);
    console.log(3*2);
    console.log(3/2);
    console.log(3%2);
    console.log(3.5%2);//这点和其他的编程语言有些区别哈

    //Object类型的数据
    console.log("Object类型的数据:");
    //第一种定义方式,直接地用大括号括起来
    var obj1={
        name:'John',//键:值加逗号
        age:20//最后一行不用加逗号
    };
    console.log(obj1.age);//访问数据

    //第二种定义方式,先创建再定义
    var obj2=new Object();
    obj2.home="Beijing";//原来没有home键,直接创建并赋值"Beijing"
    console.log(obj2.home);

    //NaN的判断
    var x;//x为Undefined类型
    var y=1;
    console.log(isNaN(x+y));//Undefined+Number显示为NaN(Not a Number)

    //Array类型
    //第一种方式,new Array(ele1,ele2,...,elen)
    var arr1=new Array(1,2.1,3,'haha');//数据可以存储任意的类型
    console.log(arr1[0]);
    console.log(arr1[1]);
    console.log(arr1[2]);
    console.log(arr1[3]);
    console.log(arr1[4]);//越界了,显示为Undefined

    //第二种方式,=[ele1,ele2,...,elen]直接定义
    var arr2=[2,3,"hehe"];
    console.log(arr2[0]);
    console.log(arr2[1]);
    console.log(arr2[2]);
</script>
</body>
</html>

数组

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Array类型的操作展示</title>
</head>
<body>

<script>
    /*Array的length属性*/
    console.log("Length:")
    var arr1=[1,2,3,4];
    console.log(arr1.length);

    arr1.length=2;//改变length,arr真的会被改变
    console.log(arr1);
    arr1.length=4;//不足的地方为Undefined
    console.log(arr1);

    /*Array的push、pop操作(都是从最后面加入)*/
    console.log("push/pop:")
    var arr2=[];
    arr2.push(1);
    arr2.push(2,3);
    console.log(arr2)//push/pop过后,这样显示Array好像有点问题啊
    console.log(arr2[0],arr2[1],arr2[2]);

    arr2.pop();//返回3
    console.log(arr2[0],arr2[1]);

    arr2.pop();//返回2
    arr2.pop();//返回1
    arr2.pop();//弹光了,但是会返回Undefined

    /*Array的unshift和shift*/
    console.log("unshift/shift")
    arr2=[2,3,4,5];
    arr2.unshift(0,1);//在头部添加元素
    console.log(arr2);

    arr2.shift();//删除头部的一个元素
    console.log(arr2[0]);

    /*Array的slice操作,和String的substring操作一样*/
    console.log("slice")
    var arr3=[0,1,2,3,4];
    console.log(arr3.slice(2));
    console.log(arr3.slice(0,2));

    /*利用slice来复制Array*/
    console.log("用slice复制:")
    var arr4=arr3.slice();//什么参数都不要填就行
    console.log(arr4);

    /*Array元素的查找,和String一样*/
    console.log("查找元素:")
    var arr5=[5,4,3,2,1,0]
    console.log(arr5.indexOf(3))
    console.log(arr5.indexOf(99))//查找不到,返回-1

    /*Array的sort排序*/
    var arr6=[6,5,4,3];
    console.log("sort:");
    console.log(arr6.sort());

    /*Array的reverse反转*/
    console.log("reverse:")
    var arr7=[3,4,1];
    console.log(arr7.reverse())

    /*splice(先删后填)*/
    console.log("splice:");
    var arr8=[4,5,6];
    arr8.splice(0,0,"haha");//从0删0个,添加"haha"
    console.log(arr8[0]);

    arr8.splice(0,1,"hehe");//从0删1个,添加"hehe"
    console.log(arr8);

    arr8.splice(0,1);//删了不加

    /*concat*/
    var arr9=[0,1];
    var arr10=[2,3];
    console.log(arr9.concat(arr10))

    /*join,连接元素,加入字符拼成字符串再返回*/
    var arr11=[1,2,'3'];
    console.log(arr11.join('-'));
</script>
</body>
</html>

字符串

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>String类型操作的展示</title>
</head>
<body>

<script>
    /*String的拼接*/

    //第一种,用+
    var name="桑";
    var age=20;
    console.log(name+age+"岁了!");

    //第二种,模板字符串:`${str1}${str2}...`
    console.log(`${name}${age}岁了!`);

    /*字符串的索引*/
    var word="Hello,world!"
    console.log(word[0])
    console.log(word[1])
    word[0]='G'//字符串可以索引特定字符,但修改是无效的
    console.log(word[0])

    /*查找字符*/
    console.log(word.indexOf("Hello"))//"Hello"开始的下标
    console.log(word.indexOf("w"))//"w"开始的下标

    /*子字符串*/
    console.log(word.substring(3))//从下标3到最后
    console.log(word.substring(0,6))//[0,5]

    /*大小写的转换*/
    console.log(word.toUpperCase())//转大写
    console.log(word.toLowerCase())//转小写
</script>
</body>
</html>

对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Object对象操作展示</title>
</head>
<body>

<script>

    /*Object对象的定义*/
    var obj1={
        name:"Sang",
        "goal-city":"Shenzhen"//有特殊字符的,用""括起来
    };

    /*Object内数据的访问*/
    console.log(obj1.name);
    console.log(obj1["goal-city"]);//特殊字符的键的访问需要[]括起来
    console.log(obj1.age);//不存在的对象,返回Undefined

    /*判断是否含有某属性*/
    console.log("name" in obj1);//判断name属性是否在obj1中
    console.log("toString" in obj1);//判断toString是否在obj1中(obj1包括继承的属性)
    console.log(obj1.hasOwnProperty("toString"))//除去了继承的内容

    /*删除某项数据*/
    delete obj1.name;
    console.log(obj1.name);
</script>
</body>
</html>

条件判断

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>条件判断操作展示</title>
</head>
<body>

<script>

    var a=10;
    if(a>10)
    {
        alert("我比10大!");
    }
    else if(a==10)
    {
        alert("我和10一样大!");
    }
    else
    {
        alert("我没有10大!");
    }

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

循环

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>循环操作展示</title>
</head>
<body>

<script>

    /*while*/
    var i=0;
    while(i<10)
    {
        console.log(i)
        i++;
    }

    /*do-while*/
    do {
        console.log(i);
        i--;
    }while(i>=0);

    /*for循环*/
    var sum=0;
    for(i=0;i<100;i++)
    {
        sum+=i;
    }
    console.log(sum);

    /*for循环遍历数组*/
    var arr=[0,1,2,3,4,5];
    for(var i=0;i<arr.length;i++)
    {
        console.log(arr[i]);
    }

    /*for循环遍历对象属性*/
    var obj={
        name:"Sang",
        age:20,
        city:"Guoyang"
    }

    for(var key in obj)//var 键 in 对象
    {
        console.log(key,obj[key]);//这种会把包括继承属性在内的属性都遍历
    }

    for(var key in obj)
    {
        if(obj.hasOwnProperty(key))
            console.log(key,obj[key]);//不遍历继承的属性
    }

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

Map

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>map操作展示</title>
</head>
<body>

<script>

    /*map的创建,键和值可以是任意的类型*/
    var mp=new Map([[1,"haha"],["speak","hengheng"]]);

    /*根据键访问值.get*/
    console.log(mp.get(1));
    console.log(mp.get("speak"));

    /*判断是否含有某个键.has*/
    console.log(mp.has(1));
    console.log(mp.has(2));

    /*添加某个键.set*/
    mp.set("jump","You jump! I jump!");
    console.log(mp.get("jump"))

    /*删除某个键*/
    mp.delete("jump")
    console.log(mp.has("jump"))
</script>
</body>
</html>

Set

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>set操作展示</title>
</head>
<body>

<script>

    /*set的创建*/
    var st=new Set([5,3,2,1]);

    /*添加值.add*/
    st.add(10);

    /*删除值.delete*/
    st.delete(10);
</script>
</body>
</html>

iterable对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>iterable对象的遍历操作的展示</title>
</head>
<body>

<script>

    /*
    Array、Set、Map都属于iterable对象,都可以用下面操作遍历
    注意:里面的是of
    */

    //Array的遍历
    var arr=[1,2,3,4];
    for(var key of arr)
    {
        console.log(key);
    }

    //Set的遍历
    var st=new Set([2,1,4,5,3]);
    for(var val of st)
    {
        console.log(val);//事实证明js的Set并不像C++当中的那样会自动地排序
    }

    //Map的遍历
    var mp=new Map([[1,"Haha"],[2,"HeiHei"]]);
    for(var val of mp)
    {
        console.log(val[0],val[1]);//val[0]是键,val[1]是值
    }
</script>
</body>
</html>
发布了35 篇原创文章 · 获赞 8 · 访问量 1753

猜你喜欢

转载自blog.csdn.net/qq_40677317/article/details/105498465