1、数据类型
两大类
一、基本数据类型 number string boolean null undefined
1,Number (数值)
// 1. typeof(变量):检测变量类型。
var a=10;
console.log(typeof(a)); //操作台输出number
//2. 8进制 0开头,没超过8的数
var b=011;
//3. 十六进制 0x开头,就是16进制:1~9 a~f
var c=0xa;
//4. NaN (not a number)不是一个数
//5. 小数相加由偏差,不要用小数做判断
console.log(0.1+0.2); //输出 0.3000000004
2,String(字符串)
//string 写在引号里面的 都是string
var str = ''; //空字符串
console.log(typeof str) ;
var x = '1234567890qwetyuiopasdgjklzxcvbnm,.';
console.log(typeof x) ;
//获取到字符串的长度 字符串.length
console.log(x.length)
// 相同的变量名称 后面的会覆盖前面的
//charAt() 获取字符串中其中一位字符,从零开始
console.log(x.charAt(3))<==>console.log(x[3])
4,boolean(布尔类型 true false)一般用在条件判断
非0为真,非空为假, 0为假,其他数字为真,空字符为假,其他为真
console.log(10>20); //false
console.log(20>10); //true
5,null 空 ; undefined 变量没有初始化值空缺。
null:Null类型,代表“空值”,代表一个空对象指针,使用typeof运算得到“object”,所以可以认为它是一个特殊的对象值。
undefined:Undefined类型,当一个声明了一个变量未初始化时,得到的就是undefined。
var no=null;
console.log(typeof no) ; //空 typeof检测为 object
//undefined 未定义的
var a;
console.log(a); // undefined
//一般情况下 如果你的代码里出现 null 或者是 undefined 说明你的代码是有问题的
var b = 'asd';
console.log(b) // asd
二、引用数据类型(复合,复杂) Object 函数function 数组array
1,Object
对象类型object:具体的东西都可以看作对象(从页面当中获取的所有元素都是对象类型)
var obj={name:"张三",age:18,city:"北京"};
console.log(obj.name); //输出 张三
console.log(obj['name']); //输出张三
console.log(typeof obj); //object
2,函数function
//function
// function(){} 匿名函数
// function fun(){} 命名函数
function fun(){
console.log(typeof fun)
}
// 调用函数 调用几次 执行几次
fun()
3,数组array
// array 数组
// var arr = [];
console.log(typeof arr) //object
var arr1 = new Array(); // 通过new关键字
console.log(arr1)
var arr = [1,"数组",true,{"name":"ujiuye"},[]]; //数组里的项 可以是任意的数据类型
console.log(arr)
console.log(arr.length);
console.log(arr[2])
arr[2]=false
console.log(arr) //(5) [1, "数组", false, {…}, Array(0)]
arr[10]='我是下标为10的项';// 数组里面允许出现下标为空的值
console.log(arr) //(11) [1, "数组", false, {…}, Array(0), empty × 5, "我是下标为10的项"]
arr.push('我是后来的');// 在数组的后面添加一项
console.log(arr) //(12) [1, "数组", false, {…}, Array(0), empty × 5, "我是下标为10的项", "我是后来的"]
2、数据类型的强制转换
其他转number
//js 数据类型 number string boolean null undefined
// object array-->object function -->function
// typeof
//null --> object
// 数据类型之间的转换 Number() 返回的是一个新的值 不会改变原有的值
// 语法: Number()
console.log(Number('')); // 0
console.log(Number('123')); //123
console.log(Number('234aqsd')); // NaN not a number
console.log(typeof NaN);
console.log(Number('0.12.3')); // NaN
console.log(Number('.0123')); //rgba(0,0,0,.9)
console.log(Number('e123'));// NaN
// 字符串转数值 空的转成0 纯数字的转成对应的数值 可以识别一个小数点而且必须是纯数字的 其余全部转成NaN
//boolean
console.log(Number(true)); //1
console.log(Number(false)); //0
//null
console.log(Number(null)); // 0
//undefined
console.log(Number(undefined)); // NaN
console.log(NaN == NaN); // false
console.log(1 == '1'); // true 隐式类型转换
console.log(1 == true); // true
console.log(null == ''); // false
console.log('' == 0); // true
// null undefined 属于无值类型 和其他任意比较 均为 false
console.log(0 == null); //false
console.log(null == null,11111);
console.log(undefined == undefined,22222);
//转数值类型的方法 浮点型的 整形的
// parseInt() 识别字符串里以数字开头的连续性的值 转成对应的数值
console.log(parseInt('123'));//123
console.log(parseInt('123.234')) ; //123
console.log(parseInt('123asd')) ; //123
console.log(parseInt('0123asd')) ; // 123
console.log(parseInt('0.123asd')) ; // 0
// parseFloat() 识别字符串里以数字开头的连续性的值 可以识别一个小数点
console.log(parseFloat('123')) ; //123
console.log(parseFloat('0.as123')); //0
console.log(parseFloat('a0.as123')); // NaN
// isNaN 是不是一个数值 数字返回 false
console.log(isNaN('123q')) //
其他转字符串
toString 变量有意义
String 变量没意义
// string toString()
console.log(String(123)); //'123'
console.log(typeof String(123)); //string
console.log(String(true)); //'true' 'false'
console.log(String(null)); //'null'
console.log(String(undefined)); // undefined
var arr = [1,'a',['asd']];
var str = String(arr)
console.log(typeof str); // '1,a,asd'
// var obj = {"name":"ujiuye123"}
// var obj = {"name":"ujiuye123","age":"12"}
var obj = {};
var str1 = String(obj) // [object object]
console.log(str1)
console.log(str1.length)
console.log(typeof str1)
// 变量.toString() number类型 2~36 进制
var x = 234;
console.log(x.toString());
var y = 13;
console.log(y.toString()); // '13'
console.log(y.toString(16)); // ‘d’
运算符
优先级:
1,()最高,
2,一元运算符: ++ -- !
3,算数运算符:* / % + -
4,比较运算符: > >= < <=
5,相等运算符: ==等于 ===绝对相等 !=不等 !==绝对不等,
6,逻辑运算符:先&& 后||
7,赋值运算符:+= -= *= /=
1,算术运算符
前置++/–:先 加/减 1,后参与运算
后置++/–:先参与运算,后 加/减 1
// 算术运算 + - * / % ++ --
// 隐式转换 - * / %
var x = 3;
var y = 4;
console.log(x+y); // 7
console.log(3+'4'); //34 + 连接符
console.log(3-'4'); // -1 隐式转换
console.log(3*'4'); // 12
console.log(3/'4'); // 0.75
console.log(3%4); // 3
console.log(3%'4'); // 3
// ++ -- 运算符在前 先运算 后赋值 元素符在后 先赋值后运算
var z = 5;
var a = z++;
var w = 5;
var b = ++w;
console.log('a=',a,'b=',b); // a=5 b=6
console.log(10/0); // Infinity
console.log(0/0); // NaN
var a = 10;
var b = ++a + a++ + ++a;
//b=11 + 11 + 13
var c = b++ + ++a
//c= 35 + 14
console.log(a,b,c); // 14 36 49
2,赋值运算符
//赋值运算 = += -= *= /=
var x = 1;
// += x+=3 --> x=x+3
x+=1
console.log(x) ; //2
//-= x-=3 ---> x=x-3
x-=1
console.log(x) ; //1
//*= x*=3 --> x=x*3
x*=3
console.log(x) ;//3
// /+ x/=3 -->x=x/3
x/=3
console.log(x) ; //1
var arr = ['天生我材必有用','千金散尽还复来','窈窕淑女','君子好逑'];
var len = arr.length;
var str = ''
for(var i=0;i<len;i++){
str+='<li>'+arr[i]+'</li>'
}
demo.innerHTML = str;
3,比较运算符
// 比较运算 > < >= <= == != === !== 返回值是一个布尔值
// console.log(10>20);//false
// console.log(1+3<5);//true
// console.log(null == 0); //false
// console.log(null != 0); //true
// console.log(''==''); // true
console.log([] == []); // false
var a = [];
var b = a;
var c = [];
console.log(a==b); // true 地址
console.log(a==c); // false
console.log(1 == '1') ; // true == 只比较数据大小
console.log(1 === '1') ; // false === 同时比较数据大小和数据类型
// 浅拷贝
/* var arr = [1,2,3]
var arr1=arr
arr1[3] = 4;
console.log(arr)*/
4,逻辑运算符
// 逻辑运算 与 && 或 || 非 ! 流程控制 (条件判断)
//与 && 全真为真 一假则假
console.log(3>2 && 4<5); // true
console.log(3<=2 && 4<5); // false
// 或 || 一真为真 全假才假
console.log(3<=2 || 4<5); // true
console.log(3<=2 || 4>5); // false
// 非 !
console.log(!(null == 0)); // true
// 0为假1为真 非空为真
var str='';
if(!str){
console.log('非空')
}
5,三元运算符
// 三目运算 三元运算 条件?真:假
var a = 0;
// !(a<3)?alert('true'):alert('false')
//运算符的优先级
// console.log(!false+2)
console.log(typeof (10+'a'))
1,js数据类型?
number数字 string字符串 boolean布尔 null空 undefined未定义
object复合类型 function函数 array数组
2,null和undefined的区别?
null表示空值,但是为object类型,undefined表示变量没有初始化,值的空缺。
3,NaN会在什么情况下出现?举例出现这种情况的代码?
NaN表示 not a number ;一般不正常运算出现。
//parseFloat 取小数,
console.log(parseFloat('a0.as123')); // NaN
4,例举至少 3 种强制类型转换和 2 种隐式类型转换?
//强制类型转换
console.log(Number('')); // 0
console.log(Number('123')); //123
console.log(Number(null)); // 0
//隐式类型转换
console.log(10+"100") //10100
console.log(true+false) //1
本文介绍了JavaScript的两种主要数据类型:基本数据类型(Number, String, Boolean, null, undefined)和引用数据类型(Object, Function, Array)。讨论了null与undefined的区别,以及在什么情况下会出现NaN。此外,还讲解了数据类型的强制转换方法,如其他类型转Number和String,并列举了算术、比较等运算符。最后,提到了几种强制和隐式类型转换的例子。"
124841649,11730857,《机器学习实战》概览,"['机器学习', '人工智能', 'Python编程', '数据科学', '算法']
2429

被折叠的 条评论
为什么被折叠?



