数据类型
<!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>
</head>
<body>
<script>
window.onload = function() {
// javascript中的变量是没有数据类型的,只有值才有数据类型
// 变量可以随时持有任何类型的值 类型决定了值得行为特征
// 内置类型
// javascript有7种内置类型
// 1.空值 null
// 2.未定义 undefined
// 3.数值 number
// 4.字符串 string
// 5.对象 object
// 6.布尔 boolean
// 7.符号(ES6新增) symbol
// 除对象之外,其他统称为基本类型
// typeof 运算符总是返回一个字符串
// ,“undefined”和“is not defined”是两码事。 undefined表示已声明但未赋值,is not defined表示未声明
console.log(typeof undefined); //undefined
console.log(typeof null); // object
console.log(typeof 111); // number
console.log(typeof "str"); // string
console.log(typeof true); // boolean
console.log(typeof {}); // object
console.log(typeof function f(){}); // function
console.log(typeof Symbol()); // symbol
// 判断是否为null
console.log(!null && typeof null === "object"); //true
function fun(){}
/* 虽然使用typeof运算符显示为function 然而查阅规范就会知道,它实际上是object 的一个“子类型”。
具体来说,函数是“可调用对象”,它有一个内部属性[[Call]],该属性使其可以被调用。*/
console.log(typeof fun); // function
// 另外 数组也是object的子类型
var array = [];
console.log(typeof array); // object
console.log(array instanceof Array); // true
console.log(array.constructor === Array); // true
// 判断是否为Array
let isArray = Object.prototype.toString.call(array) === "[object Array]";
console.log(isArray); // true
// 判断数据类型的可靠方法:Object.prorotype.toString.call(变量);
let arr = Object.prototype.toString.call(undefined);
// javascript中的内置函数
// 1.String()
// 2.Number()
// 3.Boolean()
// 4.Array()
// 5.Function()
// Object()
// RegExp()
// Date()
// Error()
// Symbol()
let flag = new Boolean(false);
if(!flag){
// 执行不到这里
console.log("false");
}else{
console.log("true");
}
// javascript中的值可以分为以下两类
// 1.可以被强制转换为false的值
// 2.其他 可以被强制转换为true的值
// 以下这些为假值
// 1. false
// 2. 0 +0 -0 NaN
// 3. ""
// 4. undefined
// 5. null
// 从逻辑上说,假值列表以外的值都为真值
// 但js规范并没有对此明确定义,只是给出了一些示例,比如所有的对象都为真值
// 我们可以理解为假值列表外的值都为真值
// 但是有一种例外:假值对象
// 浏览器在某些特定情况下,在常规JavaScript 语法基础上自己创建了一些外来(exotic)值,这些就是“假值对象”。
// 以下为典型的假值对象
console.log(!!new Boolean(false)); // true
console.log(!!document.all); // false
// 一元运算符 + 会将操作数强制转换为数字
console.log(+"123"); //数字123
console.log(+ new Date()); // 1580992014037
// 注意:获取时间戳推荐使用ES5的静态方法Date.now()
console.log(Date.now()); // 1580992014037
console.log(new Date().getTime()); // 1580992014037
// 浏览器请求URL页面到显示的过程:
// 发送http请求
// 到达dns服务器进行域名解析
// 得到ip地址
// tcp/ip 三次握手四次挥手
// 得到资源文件
// 浏览器生成domtree
// 渲染(render)
}
</script>
</body>
</html>