JavaScript基础语法-dom/bom-es6-jQuery-数据可视化echarts(1)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaScript基础语法-dom/bom-es6-jQuery-数据可视化echarts(1),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含21138字,纯文字阅读大概需要31分钟。
内容图文
文章目录
此篇仅包含JS语法基础
编程语言
分为机器语言,汇编语言,高级语言(C++,Pyhton,Jave…);
高级语言需要翻译器翻译成计算机能识别的;
计算机基础
计算机组成
JavaScript初识
JS的概念
JS是一种运行在客户端的脚本语言(Script)是脚本的意思;脚本语言:不需要编译,运行过程由js解释器(js引擎)逐行来进行解释并执行;现在也可以基于Node.js技术进行服务器端编程;
JS的作用
HTML/CSS/JS的关系
HTML/CSS标记语言-描述类语言
JS脚本语言-编程类语言
浏览器执行JS简介
浏览器分为两部分:渲染引擎和JS引擎
浏览器本身并不执行JS代码,而通过内置JS引擎(解释器)执行JS代码,JS引擎执行代码时逐行解释每一句源码(转为机器语言)然后计算机去执行,所以JS语言归为脚本语言,会逐行解释执行。
JS的组成
js有三种书写位置,分为行内、内嵌、外部。
js用单引号,html用双引号;
ECMA简称es
js输入输出语句
// 这是一个输入框
prompt('请输入您的年轻');
// alert弹出警示框 输出的 展示给用户的
alert('计算的结果是:');
// console 控制台输出,给程序员测试用
console.log('我是程序员能看到的');
给程序员看到的在检查网页的console里看;想要输出多个变量用逗号分开即可~
变量
什么是变量
变量是存放数据的容器,通过变量名获取数据,甚至修改数据;
本质:变量是内存中申请的存放数据的一块空间;
变量的使用
声明变量
var age;
// 1.声明了一个age的变量
var age;
// 2.赋值,把值存到变量中
age = 18;
// 3.输出结果
console.log(age);
// 变量的初始化
var myname = 'xiaohu';
console.log(myname);
变量应用(弹出输入的用户名)
// 用户输入名字 存储到myname的变量里
var myname = prompt('请输入您的用户名');
// 弹出用户名
alert(myname);
变量的语法扩展
// 1.更新变量
var myname = '小苹果';
console.log(myname);
myname = '肖央';
console.log(myname);
// 2.声明多变量
var age = 18,
address = '火影村',
gz = 2000;
// 3.声明变量的特殊情况
// 3.1 只声明不赋值 结果是undefined 未定义的
var sex;
console.log(sex);
// 3.2不声明不赋值,会报错,且不会继续执行后面的内容
// console.log(apple);
// 3.3不声明只赋值,可以,但这个是全局变量
sex = 'girl';
console.log(sex);
变量命名规范
交换两个变量值
var apple1 = '青苹果';
var apple2 = '红苹果';
var temp;
temp = apple1;
apple1 = apple2;
apple2 = temp;
console.log(apple1);
console.log(apple2);
数据类型
简介
在计算机中,不同的数据所需占用的存储空间不同
变量的数据类型
JS是一种弱类型或动态类型的语言,变量是不确定它属于哪张数据类型,只有程序在运行过程中根据等号右边的值来确定,变量的数据类型是可以变化的;
数据类型的分类
JS分为两类:
简单数据类型 复杂数据类型
简单数据类型(基本数据类型)
数字型
八进制:在数值前面加0,log后显示的是转换成的10进制。
十六进制:在数值前面加0x 0-9 a-f
var num2 = 010;
console.log(num2);
var num3 = 0xa;
console.log(num3);
// 数字型的最大值
alert(Number.MAX_VALUE);
// 1.7976931348623157e+308
// 数字型的最小值
alert(Number.MIN_VALUE);
// 5e-324
// 数字型的最大值
alert(Number.MAX_VALUE);
// 1.7976931348623157e+308
// 数字型的最小值
alert(Number.MIN_VALUE);
// 5e-324
// 无穷大 Infinity
console.log(Number.MAX_VALUE * 2);
// 无穷小 -Infinity
console.log(-Number.MAX_VALUE * 2);
// 非数字 NaN
console.log('xiaopingg' - 100);
// isNaN()判断是否不是数字,用于验证用户输入的是不是数字
console.log(isNaN(12));
字符串型
转义符要在引号里面
注意是反斜杠!
// 关于引号外单内双(或外双内单)
var str = '我是一个"白富美"程序媛';
console.log(str);
var str1 = "我是一个'白富美'\n的程序媛";
console.log(str1);
var str = 'my name is andy';
console.log(str.length);
//.length检测字符串长度
+号口诀,数值相加,字符相连
// 关于引号外单内双(或外双内单)
var str = '我是一个"白富美"程序媛';
console.log(str);
var str1 = "我是一个'白富美'\n的程序媛\\";
console.log(str1);
//length检测字符串长度
var str = 'my name is andy';
console.log(str.length);
//字符串拼接+ 只要有字符串和其他类型拼接,最终是字符串型
console.log('沙漠' + '骆驼' + 10);
console.log(12 + 12);//24
console.log('12' + 12);//1212
var age = 18
console.log('pink' + age + '岁');
解释型语言和编译型语言
js是解释型语言 java是编译型语言;
运算符
算术运算符
浮点数精度问题
表达式和返回值
表达式由数字、运算符、变量等组成的式子;
结果就是返回值,如2=1+1, 2就是返回值;
前(后)置自增(减)运算符
必须和变量一起使用噢~
var num = 1;
num = num + 1;//++num;
console.log(num);//2
console.log(++num + 10);//13
age = 10;
age++;
console.log(age);//11
console.log(age++ + 10);//21 不是22噢~先返回11进行运算,后来age才变化;
console.log(age);//12
前置自增和后置自增如果单独使用效果是一样的,后置自增先返回原值后自加1;见上面age的例子;代码常用的是后置递增且独占一行。
比较运算符
// 等号==会自动转换数据类型 !=不等
console.log(18 == '18');//true
//全等===数据类型和值都要一样 !==不全等
console.log(18 === '18');//false
var num1 = 10;
var num2 = 100;
var res1 = num1 > num2;//false
var res2 = num1 == 11;//false
var res3 = num1 != num2;//true
console.log(res1);
console.log(res2);
console.log(res3);
逻辑运算符
// 逻辑与&&
console.log(3 > 5 && 3 > 2);//false
console.log(3 < 5 && 3 > 2);//true
// 逻辑或 ||
console.log(3 < 5 || 3 < 2);//true
console.log(3 > 5 || 3 < 2);//flase
// 逻辑非!
var isOK = !true;
console.log(isOK);//false
console.log(!true);//false
逻辑中断(短路操作)
当逻辑与(或)两端是表达式或值时:
123 & 456
(表达式1)&&(表达式2)
逻辑与:如果表达式1是真,则返回表达式2,如果表达式1是假,则返回表达式1;
(0 ’ ’ null undefined NaN都是假)
逻辑或:如果表达式1是真,则返回表达式1,如果表达式1是假,则返回表达式2;
注意:逻辑中断相当于执行到那里就中断了
var num = 0
console.log(123 || num++);//123
console.log(num);//0
var num = 0
console.log(123 && num++);//0
console.log(num);//1
###运算符优先级
JS流程控制
流程控制
分支结构
if语句(else)
if (条件表达式) {
条件表达式为真就执行这条语句;
}
else后面直接跟大括号
var age = prompt('请输入您的age:')
if (age >= 18) {
alert('欢迎光临');
}
var age = prompt('请输入您的age:')
if (age >= 18) {
alert('欢迎光临');
} else {
alert('不欢迎你');
}
if else if多分支语句
三元表达式
有三元运算符组成的表达式;如? :
(条件表达式)?表达式1:表达式2
如果条件表达式成立则输出表达式1,否则输出表达式2;
var num = 10;
var result = num > 5 ? 'yes' : 'no';
console.log(result);
switch语句
switch里()通常为变量,case后的和switch里的表达式要**===全等**! 要写break不然会继续执行下一个case;
switch(x) {
case x:
xxx;
break;
case x:
xxx;
break;
…
default:
xxx;
}
下面这个案例一定要加引号,因为输入是string数据类型,必须是全等!
var fruit = prompt('请输入水果:');
switch (fruit) {
case '榴莲':
alert('70/斤');
break;
case '苹果':
alert('2.5/斤');
break;
default:
alert('没有这个水果');
}
循环语句
for(初始化变量;条件表达式;操作表达式){
//循环体
}
断点调试
通过F12检查Sources里点击要设置断点的一行,刷新后,按下面这个到下一步
可以通过watch观察i循环多少次了:
for案例
一行打印五颗?
var str = '';
for (var i = 1; i <= 5; i++) {
str += '?';
}
console.log(str);
双重for循环
案例,打印五行五列?
// 打印五行五列的?
var str = '';
for (var i = 1; i <= 5; i++) {
for (var j = 1; j <= 5; j++) {
str += '?';
}
str += '\n';
}
console.log(str);
打印倒三角:
// 打印倒三角
var str = '';
for (var i = 1; i <= 10; i++) {
for (var j = i; j <= 10; j++) { str += '?'; }
str += '\n';
}
console.log(str);
结果:
打印九九乘法表:
代码:
str = '';
for (var i = 1; i <= 9; i++) {
for (var j = 1; j <= i; j++) {
var res = i * j;
str += j + '*' + i + '=' + res + '\t';
}
str += '\n';
}
while循环
while(条件表达式) {
//循环体
}
while循环与do while循环
var age = 1;
while (age <= 100) {
console.log(age);
age++;
}
var age = 1;
do {
console.log(age);
age++;
} while (age <= 100)
do while循环语句至少执行一次;
continue和break
continue用于退出当前次循环,但继续执行后面的循环。
break关键字用于立刻跳出整个循环。
for (var i = 1; i <= 5; i++) {
if (i == 3) {
continue;
}
console.log(i);// 1 2 4 5
}
for (var i = 1; i <= 5; i++) {
if (i == 3) {
break;
}
console.log(i);//1 2
}
JS命名规范和语法格式
标志符命名规范
还有操作符规范…
数组
数组概念和创建
数组array是一组数据的集合,存储在单个变量中。里面的数据类型不限,数组元素要用逗号隔开。
// 创建数组方法1:
var arr = new Array();
var arr1=new Array(2);//表示数组长度为2,里面是空的数组元素
var arr1=new Array(2,3);//写多个数到里面,就是创建数组,里面的元素是2,3
// 创建数组方法2:
var arr = [];//创建一空数组
var arr1 = [1, 2, 'pink', true];
//里面的数据为数组元素
检测是否为数组(对象)
// 判断是否是数组
// instanceof运算符检测是否为数组
var arr = [],
obj = {};
console.log(arr instanceof Array);
//Array.isArray(参数) H5新增方法 IE9以上版本浏览器可以用
console.log(Array.isArray(arr));
数组的索引
索引号从0开始
// 获取数组元素 数组名[索引号]
console.log(arr1);
console.log(arr1[2]);//pink
console.log(arr1[5]);//undefined
indexOf():对象
//indexOf在括号里写数组元素,返回数组的索引;如果有多个相同的元素,则返回第一个索引;如果数组没有查找的元素则返回-1;
console.log(arr2);
var arr3 = [12, 4, 77, 1, 7];
console.log(arr3.indexOf(4));
//LastIndexOf也是返回数组的索引,但它是从后面往前查找,索引号不变
console.log(arr3.lastIndexOf(4));
遍历数组
即把数组从头到尾访问一次
数组长度
数组名.length
//求数组[2,6,1,7,4]所有元素和与平均值
var arr = [2, 6, 1, 7, 4],
sum = 0;
for (var i = 0; i < arr.length; i++) {
sum += arr[i];
}
// console.log(sum);
// console.log(sum / arr.length);
console.log(sum, sum / arr.length);
数组案例求最大值
var arr = [2, 6, 17, 9, 21, 8],
max = arr[0];
for (i = 1; i < arr.length; i++) {
if (max < arr[i]) {
max = arr[i];
continue;
}
}
console.log(max);
另一种方法:(Math对象)
数组去重(对象)
function unique(arr) {
let newArray = [];
for (i = 0; i < arr.length; i++) {
if (newArray.indexOf(arr[i]) == -1) {
newArray.push(arr[i]);
}
}
return newArray;
}
var res = unique([1, 1, 3, 3, 9, 10, 8, 9]);
console.log(res);
新增数组元素
1.修改length长度;
var arr = [1, 2, 3, 4];
console.log(arr.length);
arr.length = 5;
console.log(arr);
console.log(arr[4]);//undefined
2.新增数组元素,修改索引号,注意不要直接给数组名赋值不然所有数组元素都换了。
var arr1 = [1, 2, 3];
arr1[3] = 4;
console.log(arr1);//[1,2,3,4]
arr1[0] = 9;
console.log(arr1);//[9,2,3,4]替换了原来的数组元素
push()和unshift()–对象
var arr1 = [1, 2, 3, 4];
// arr1.push(4, 'pink');
console.log(arr1.push(4, 'pink'));//6
console.log(arr1);//[1, 2, 3, 4, 4, "pink"]
//push可以给数组追加新元素;括号里直接写元素就可以;push完毕后返回的结果是数组的长度;原数组也会放生变化;
// arr1.unshift('red', 'purplr');
console.log(arr1);//["red", "purplr", 1, 2, 3, 4, 4, "pink"]
console.log(arr1.unshift('red', 'purplr'));//8
//unshift可以在数组前给它添加新元素;括号里直接写元素就可以;push完毕后返回的结果是数组的长度;原数组也会放生变化;
案例1:找出数组中大于10的数并构成一个新的数组。
var arr1 = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7, 10],
arr2 = [],
j = 0;
for (var i = 0; i < arr1.length; i++) {
if (arr1[i] >= 10) {
arr2[j] = arr1[i];
j++;
}
}
console.log(arr2);
//方法2
var arr1 = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7, 10],
arr2 = [];
for (var i = 0; i < arr1.length; i++) {
if (arr1[i] >= 10) {
arr2[arr2.length] = arr1[i];
}
}
console.log(arr2);
案例2:数组翻转,把数组的内容从后到前排列重组。
//方法1
var arr5 = ['red', 'orange', 'yellow']
arr6 = [];
for (i = arr5.length - 1; i >= 0; i--) {
arr6[arr6.length] = arr5[i]
}
console.log(arr6);
//方法2(对象)
arr.reverse()
案例3:冒泡排序(源码/sort实现)
原理:从头到尾比较两两值的大小,如果不符合从大到小(或从小到大)就交换两两值。
外层for循环管循环的趟数,arr.length个元素就有arr.length-1趟,内层循环是每一趟要交换的次数,arr.length个元素,第0趟交换arr.length-1次,第1趟交换arr.length-2次…第i趟交换arr.length-i-1次(注意趟数是从0开始)
var arr = [6, 2, 4, 1, 3, 5],
temp = 0;
for (var i = 0; i < arr.length - 1; i++) {
for (var j = 0; j < arr.length - 1 - i; j++) {
if (arr[j + 1] < arr[j]) {
temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
console.log(arr);
//数组排序(冒泡)--对象
var arr2 = [12, 4, 77, 1, 7];
/* arr2.sort();
console.log(arr2);//[1,12,4,7,77];按每一位来比较 */
arr2.sort(function (a, b) {
return b - a;//a-b为升序,b-a为降序
});
console.log(arr2);
删除数组元素(对象)
// pop删除数组最后一个元素
console.log(arr1.pop());//返回的是删除的元素pink
console.log(arr1);//["red", "purplr", 1, 2, 3, 4, 4]
//shift删除第一个元素
console.log(arr1.shift());//返回的是删除的元素red
console.log(arr1);//["purplr", 1, 2, 3, 4, 4]
数组转为字符串(不影响原数组)–对象
var arr = ['pink', 'red', 'blue'];
var arr2 = arr.toString()//pink, red, blue
console.log(typeof arr2);//string
var arr3 = arr.join('-');
console.log(arr3);//pink-red-blue
其他–对象
基本包装类型
基本包装类型指的是把简单数据类型包装成了复杂数据类型;
字符串的不可变
给字符串赋值,旧的字符串并不会删除掉,会在内存新开辟一块空间存放这个字符串,然后str就指向这个新的空间。(慎用拼接…)
也就是说看上去变了的字符串其实是地址变了。
字符串对象 根据字符返回位置indexOf()
// str.indexOf('要查找的字符',[起始位置])
var str = '改革春风吹满地,春天来了';
console.log(str.indexOf('春', 3));//起始位置只要在2之前都返回2,在2之后都返回8;
查找案例(数组的写法同理)
// 查找所有o的位置并把所有的位置索引输出
var str = 'abcofrqgjhdjojdioew';
var index = str.indexOf('o');
var num = 0;
while (index != -1) {
num++;
console.log(index);
index = str.indexOf('o', index + 1);
}
console.log(num);
根据位置返回字符
1.charAt(index)
var str = 'abcofrqgjhdjojdioew';
console.log(str.charAt(4)); //f
2.charCodeAt(index) 返回相应索引号的字符的ASCII码 目的:判断用户按下了哪个键
3.str[index] H5新增的
案例Important(找字符串出现次数最多的字符)
var str = 'abcofrqgjhdjojdioew';
var o = {};
for (var i = 0; i < str.length; i++) {
var chars = str.charAt(i)
if (o[chars]) {
o[chars]++;
} else o[chars] = 1;//可以给属性值直接赋值
}
//遍历对象
var max = 0;
var ch = '';
for (var k in o) {
//k得到的是属性名,o[k]是属性值
if (o[k] > max) {
max = o[k];
ch = k;
}
}
console.log('最多的字符是:' + ch + '出现的次数是:' + max + '次');
其他方法(拼接,截取,替换,转数组)
concat(’’)拼接
substr(起始位置,个数)截取字符串
replace(‘被替换的字符’,‘替换为的字符’)
var stri = 'andyandy';
console.log(stri.replace('a', 'b'));//只能替换第一个a bndyandy
//有一个字符串'abcjkdhsadadde'把所有a替换成*
var str1 = 'abcjkdhsadadde';
while (str1.indexOf('a') !== -1) {
str1 = str1.replace('a', '*');
}
console.log(str1);
split(‘分隔符’)
var str = 'pink,red,blue';
var str1 = 'pink&red&blue';
console.log(str.split(','));
console.log(str1.split('&'));
函数
函数概念何使用
函数是封装了一段可以被重复执行调用的代码块。
目的:让大量代码重复使用。
函数的参数
形参:在声明函数的小括号里面,形式上的参数。形参是可以不用声明的变量。
实参:在调用函数的小括号里,实际参数。
在声明函数时函数是不会执行的,调用函数时,实参会传递给形参,形参接受实参,函数被执行。
当形参和实参参数不匹配
任何数+undefined结果是NaN
return语句(注意事项)
相当于给调用的那句赋值。
案例:
// 求任意俩数的最大值
function getMax(num1, num2) {
var max = num1;
if (num1 < num2) {
max = num2;
}
return max;
}
console.log(getMax(10, 9));
// 写法2:
function getMax(num1, num2) {
return num1 > num2 ? num1 : num2;
}
console.log(getMax(10, 99));
// 利用函数求数组[5,2,99,101,67,77]中的最大数值。
function getMax(arr) {
var max = arr[0];
for (var i = 1; i < arr.length; i++) {
max = arr[i] > max ? arr[i] : max
}
return max
}
// console.log(getMax([5, 2, 99, 101, 67, 77]));
var res = getMax([5, 2, 99, 101, 67, 77]);
console.log(res);
return终止函数,即遇到这个代码就终止函数的执行了。
且return只能返回一个值!要返回多个值可以用数组。
如果函数没有return则返回undefined。
arguments的使用
内置=无需再声明。
// 利用函数求任意个数的最大值
function getMax() {
var max = arguments[0];
for (var i = 1; i < arguments.length; i++) {
max = arguments[i] > max ? arguments[i] : max
}
return max
}
var res = getMax(5, 2, 99, 101, 67, 77);
console.log(res);
函数实例
// 函数翻转任一数组
function reverse(arr) {
var newArr = [];
for (var i = arr.length - 1; i >= 0; i--) {
newArr[newArr.length] = arr[i];
}
return newArr;
}
var new_arr = reverse(['red', 'yellow', 'pink', 'blue']);
console.log(new_arr);
函数声明方式
下面那种又叫匿名函数,它没有函数名。他也可以进行参数的传递:
JS作用域
作用域
概念
代码名字(变量)在某个范围内起作用和效果,目的是为了提高程序的可靠性,减少命名冲突。
分类
js的作用域(es6之前):全局作用域 局部作用域。
全局作用域 :整个script标签,或一个单独的js文件;
局部作用域(函数作用域):函数内部;
既能输出10(全局)又能输出20(局部)。
变量的作用域
根据作用域的不同变量分为全局变量和局部变量。
全局变量:在全局作用域下的变量,函数内部也可以使用。
局部变量:在局部作用域下的变量,只能在函数内部使用。
注意:如果在函数内部没有声明直接赋值的变量,也属于全局变量;函数的形参也可以看作是局部变量。
从执行效率来看:全局变量只有浏览器关闭时才会销毁,比较占内存;局部变量当程序执行完就销毁。
块级作用域
js中在es6之前没有块级作用域。
块级作用域:花括号里面的作用域{} 如:if{} for {}
现在是可以在外面调用的噢~
作用域链
内部函数访问外部函数的变量,采取的是链式查找的方式来决定取哪个值,这种结构成为作用域链。(就近原则)
案例:
JS预解析
js解析器在运行js代码时分两步:预解析 、执行。
预解析:js引擎会把js里面所有的var和function提升到当前作用域的最前面。
代码执行:按照代码书写的顺序从上往下执行。
预解析分为变量预解析(变量提升)和函数预解析(函数提升)。
变量预解析(变量提升)就是把所有变量声明(不提升赋值)提升到当前作用域的最前面。
函数解析(函数提升)就是把所有函数声明(不执行)提升到当前作用域的最前面。函数表达式那种不可以,函数表达式调用必须写在函数下面!
案例:
1.undefined
2.undefined 20
3.undefined 9
var a;
function f1() {
var b;
var a;
b = 9;
console.log(a);
console.log(b);
a = '123';
}
a = 18;
f1();
对象
对象概念
对象是一个具体的事物。(不是泛指的)
js中对象是一组无序的相关属性和方法的集合。所有事物都是对象,如字符串、数值、数组、函数…
属性:事物特征(名词)
方法:事物的行为(动词)
为什么需要对象
创建方式
对象字面量创建对象{}
var obj = {
uname: '张三疯',
age: 18,
sex: '男',
sayHi: function () {
console.log('hi~');
}
}
//方法冒号后面跟的是匿名函数
// 调用方法下面两中,后者必须加''';
console.log(obj.uname);
console.log(obj['age']);
// 方法调用千万加小括号
obj.sayHi();
变量和属性;函数和方法
new Object创建对象
//利用new Object创建对象
var obj = new Object();
obj.uname = '胡佩瑶';
obj.age = 18;
obj.sayHi = function () {
console.log('hi~');
}
// 调用方法一样
构造函数创建对象
但我们希望创建多个对象时就可以使用函数创建对象。
function Star(uname, age, sex) {
this.name = uname;
this.age = age;
this.sex = sex;
this.sing = function (song) {
console.log(song);
}
}
var ldh = new Star('刘德华', 18, '男');
//构造函数名字首字母大写
// 构造函数不需要return
// 调用构造函数必须要用new,只要调用了就创建了对象
console.log(typeof ldh);
console.log(ldh.name);
ldh.sing('她来听我的演唱会')
var zxy = new Star('zxy', 50, 'man');
console.log(zxy.age, zxy.sex);
调用构造函数就是实例化的过程。
var obj = {
name: 'pink',
age: 18,
getJob: function () {
console.log('老师');
}
}
for (var k in obj) {//一般都写k或key
console.log(k);//得到属性名
console.log(obj[k]);//得到属性值,不加引号
}
内置对象
Math对象
var myMath = {
PI: 3.1415926,
max: function () {
var max = arguments[0];
for (var i = 1; i < arguments.length; i++) {
if (max < arguments[i]) {
max = arguments[i];
}
}
return max;
},
min: function () {
var min = arguments[0];
for (var i = 1; i < arguments.length; i++) {
if (min > arguments[i]) {
min = arguments[i];
}
}
return min;
}
}
console.log(myMath.PI);
console.log(myMath.max(1, 3, 5, 7, 0));
console.log(myMath.min(1, 3, 5, 7, 0));
Math.abs() 取绝对值,含隐式转换;
Math.PI //圆周率
Math.random()取 0<=x<1随机小数
//得到两个数之间随机的整数(包含这两个数)
function getRandom(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
console.log(getRandom(2, 4));
//随机点名
var arr = ['pink老师', 'hpy', '鸣人'];
console.log(arr[getRandom(0, arr.length)]);
日期对象(封装时间函数
// 封装函数返回当前的时分秒 格式 08:08:08
function getTime() {
var time = new Date();
var h = time.getHours();
h = h < 10 ? '0' + h : h
var m = time.getMinutes();
m = m < 10 ? '0' + m : m
var s = time.getSeconds();
s = s < 10 ? '0' + s : s
return h + ':' + m + ':' + s;
}
console.log(getTime());
// Data总的毫秒数(时间戳) 不是当前世界的毫秒数而是距离1970年1月1日过了多少毫秒
var date = new Date();
console.log(date.valueOf());
console.log(date.getTime());
var date1 = +new Date()//返回的就是毫秒数
console.log(date1);
// H5新增,考虑兼容性
console.log(Date.now());
简单数据类型和复杂数据类型
内存分配
复杂数据类型就是new声明的那些。注意:
//简单数据类型null 返回的是一个空对象object
console.log(typeof null);
简单数据类型直接在栈里开辟空间,存放的是值;复杂数据类型在栈里开辟空间存放十六进制的地址,然后地址指向堆里面的数据。
传参
简单类型传参:
输出11,10
复杂数据类型传参
怕记录的不够清晰,可以参考
https://www.bilibili.com/video/BV1Sy4y1C7ha?p=190&spm_id_from=pageDriver
输出: 刘德华 刘德华 张学友 张学友
内容总结
以上是互联网集市为您收集整理的JavaScript基础语法-dom/bom-es6-jQuery-数据可视化echarts(1)全部内容,希望文章能够帮你解决JavaScript基础语法-dom/bom-es6-jQuery-数据可视化echarts(1)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。