跳转至

数据类型

原始数据类型

数值型

十进制数

  • 正数和浮点数

  • 12

  • 1.2
  • -23

  • .222e33

  • -1.3e3
  • 3E-2 E后面是负2 结果0.03
  • 12e+20 e后面是正20
  • .23e4 等于0.23乘以10的4次方 结果2300

十六进制

  • 0x0
  • 0XABCDEF
  • 0x1a2d4d

八进制

  • 00
  • 023614

特殊值

  • Infinity无穷大 正无穷大和负无穷大。
  • 1.79e309
  • -1.79e309
  • NaN
  • 0/0
  • 可以通过isNaN()检测值是否为NaN

字符串型

  • 定界符 "|"
  • 转意符
  • \n回车换行
  • \r换行
  • \t水平制表符
  • \"->"
  • \'->'
//声明
var name = "高掐";
var name = String("高桥");
//常见功能
var name = "中国移动"

var v1 = name.length;
var v2 = name[0];//name.charAt(3)
var v3 = name.trim();//去除空字符
var v4 = name.substring(0,2);//中国

布尔类型

  • true/false

复合数据类型

  • 对象object
  • 数组array
  • 函数function

特殊数据类型

  • 无定义数据类型undefined
  • 空值null

null表示空值,表示什么都没有,相当于一个占位符。

null和undefined的区别就是undefined表示变量未被赋值,而null表示变量被赋予了一个空值。

数据类型转换

隐式转换

转换成布尔类型

  • undefined--- false
  • null---false
  • 数值型0或0.0或NaN--- false
  • 字符串长度为0---false
  • 其他对象--- true

转换为数值型数据

  • undefined--- NaN
  • null---0
  • true---1/false---0
  • 内容为数字---数字,否则转换成NaN

转换为字符串型数据

  • undefined---“undefined”
  • null---“null”
  • NaN---“NaN”
  • true---“true” false---“false”
  • 数值型、 NaN、0或者数值对应的字符串
  • 其它对象---如果存在这个对象则转换为toString()方法的值,否则转换为Undefined

显式转换

转换成布尔类型

通过Boolean函数强制转换成布尔值

  • 0、-0 ---false
  • NaN--- false
  • 空字符串--- false
  • undefined--- false
  • null--- false

转换成字符串

通过toString()函数转换成字符串型

  • 数值---数值本身
  • 字符串---字符串本身
  • true---“true” false---“false”
  • undefined---“undefined”
  • null---“null”

转换成数值

Number函数强制转换成数值
  • 数值---转换成原来的值
  • 字符串---如果可以解析为数值,则转换为数值;否则转换成NaN或者0
  • true---1 false---0
  • undefined--- NaN
  • null---0
转换成整型

parseInt(string,radix);返回转换成整数的值

注意

  • 当参数radix的值为0,或者没有设置这个参数,parseInt()会根据string来判断数字的基数
  • 当忽略radix,javaScript默认数字的基数规则为
  • 如果string以0x开头,parseInt()会把string的其余部分解析为十六进制的整数
  • 如果string以0开头,那么ECMAScript v3允许parseInt()的一个实现把其后的字符解析为八进制或十六进制的数
  • 如果string以1~9的数字开头,parseInt()将把它解析为十进制的整数
  • 字符串如果以合法字符开始,截取合法字符
  • 开头和结尾的空格是允许的
  • 如果字符串的第一个字符不能被转换为数字,parseInt()会返回NaN
  • 在字符串以“0”为开始时旧的浏览器默认使用八进制基数,ECMAScript 5,默认的是十进制基数
转换成浮点型

parseFloat(string);返回转换成浮点型的值

该函数指定字符串中的首个字符是否是数字。如果是,则对字符串进行解析,知道到达数字的末端未知,然后以数字返回该数字,而不是作为字符串。

注意:Number函数将字符串转换为数值比parseInt函数严格很多,基本上只要有一个字符无法转换成数值,整个字符串就会被转换成NaN

数组

//定义
var v1 = [11,22,33,44];
var v2 = Array([11,22,33,44]);
//操作
v1[1]
v1[0] = "高桥";
v1.push("解开");//尾部追加
v1.unshift("联通");//头部添加
v1.splice(索引, 0, 元素);
v1.splice(1, 0, "中国");
v1.pop();//尾部删除
v1.shift();//头部删除
v1.splice(索引, 1);
v1.splice(2, 1);//索引为2的元素删除
//循环
for(var idx in v1){
  data = v1[idx];
}
for(var i = 0; i < v1.length; i++){
    data = v1[i];
}

动态数据

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

<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>

<body>
    <ul id="city"></ul>
    <script type="text/javascript">
        var cityList = ["北京", "上海", "深圳"];
        for (var idx in cityList) {
            var text = cityList[idx];
            //创建li标签
            var tag = document.createElement("li");
            //在li标签中写入内容
            tag.innerText = text;
            //添加到id=city到标签里
            var parentTag = document.getElementById("city");
            parentTag.appendChild(tag);
        }
    </script>
</body>

</html>

对象(字典)

info = {
  name:"高迁",
  age:18
}
info.age
info.name = "张总";
info["name"] = "高职";
for(var key in info){
  data = info[key];
}

动态表格

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

<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>

<body>
    <table border="1">
        <thead>
            <tr>
                <th>ID</th>
                <th>姓名</th>
                <th>年龄</th>
            </tr>
        </thead>
        <tbody id="body"></tbody>
    </table>
    <script type="text/javascript">
        var dataList = [
            { id: 1, name: "果汁", age: 19 },
            { id: 2, name: "果汁", age: 19 },
            { id: 3, name: "果汁", age: 19 },
            { id: 4, name: "果汁", age: 19 },
            { id: 5, name: "果汁", age: 19 }
        ]

        for (var idx in dataList) {
            //创建tr标签
            var tr = document.createElement("tr");
            var info = dataList[idx];
            for (var key in info) {
                var text = info[key];
                //创建td标签
                var td = document.createElement("td");
                //在td标签中写入内容
                td.innerText = text;
                //td添加到tr标签里
                tr.appendChild(td);
            }
            //获取标签
            var bodyTag = document.getElementById("body");
            bodyTag.appendChild(tr);
        }

    </script>
</body>

</html>

函数

function func(){
  //函数体
}

//执行
func();

DOM

控制HTML中的元素,比如让盒子移动、变色、轮播图

javascript和DOM结合起来使用,DOM就是一个模块,基于这个模块可以对HTML页面中的标签进行操作。

DOM可以实现很多功能,但是比较繁琐。页面上的效果:jquery / vue.js / react.js。

//根据id获取标签
var tag = document.getElementById("xx");
//获取标签中的文本
tag.innerText
//设置标签中的文本
tag.innerText = "哈哈哈哈哈哈";
//创建标签
var tag = document.createElement("div");
//标签中写内容
tag.innerText = "哈哈哈哈哈哈";
<ul id="city">
</ul>


<script type="text/javascript">
  var cityList = ["北京", "上海", "深圳"];
    for (var idx in cityList) {
    var text = cityList[idx];
    //创建li标签
    var tag = document.createElement("li");
    //在li标签中写入内容
    tag.innerText = text;
    //添加到id=city到标签里
    var parentTag = document.getElementById("city");
    parentTag.appendChild(tag);
  }
</script>

事件的绑定

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

<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>

<body>
    <input type="text" placeholder="请输入内容" id="txtUser">
    <input type="button" value="点击添加" onclick="addCityInfo()">
    <ul id="city"></ul>
    <script type="text/javascript">
        function addCityInfo() {
            //1 获取输入框
            var txtTag = document.getElementById("txtUser");
            //2 获取输入框用户输入的数据
            var newString = txtTag.value;
            //判断输入是否为空,不为空才能继续
            if (newString.length > 0) {
                //3 创建li标签
                var newTag = document.createElement("li");
                newTag.innerText = newString;
                //4 标签添加到ul中
                var parentTag = document.getElementById("city");
                parentTag.appendChild(newTag);
                //将input框内容清空
                txtTag.value = "";
            } else {
                alert("输入不能为空");
            }

        }
    </script>
</body>

</html>

BOM

控制浏览器的一些东西,比如让浏览器自动滚动。