JS语法:

Javascript基本数据类型:undefined/null/Boolean/number/string

复杂数据类型:object

typeof用来检测变量的数据类型

typeof的使用方法有两种:

(1)typeof 变量

(2) typeof(变量)

undefined派生自null,所以undefined==null返回的结果是true


用于任何数据类型,Number()可以将非数值转化为数值,但是有一些数据是不能转化为数值的,如果这类数据通过Number()进行强制转化的话,会返回NaN

var a=Number(name_01);

用于把字符串转换为数值

var b=parseInt("28px")
var d=parseFloat("12.34.56px");

不知道值是不是null或者undefined,可以使用String(),可以将任何类型的值转为字符串

var idstr=ids.toString();
console.log(String(m));

在运算中,除了加法,其余的运算都会将字符串先转换为数字之后再进行计算,但是两个数据相加,如果有一方是字符串的话,加号的作用就是将他们进行拼接

如: 数字5和字符串"5"进行加减乘除运算,结果分别是:55    0    25   1


&&逻辑与:

如果第一个操作数隐式转换后为true,则返回第二个操作数;

如果前面的都为true,则返回最后一个操作数。

如果第一个操作数隐式转换后为false,则返回第一个操作数;

如果有一个是null,则返回null;

如果有一个是undefined,则返回undefined;

如果有一个是NaN,则返回NaN


||逻辑或:

如果第一个操作数隐式转换为true,则返回第一个操作数;

如果第一个操作数隐式转换为false,则返回第二个操作数,依次往后;

如果两个数都是null,则返回null;

如果两个数都是undefined,则返回undefined;

如果两个数都是NaN,则返回NaN;


!逻辑非

无论如何都会返回一个布尔值

!!对逻辑非的结果再求反;


JS流程控制语句:

var age=prompt("请设置您的密码");
if(age<18){
alert("您还没有成年");
}else{
alert("您已成年,请提供您的身份证号");
} if(age.length!=6){
alert("请输入6位数字密码");
}else{
if(isNaN(age)){
alert("密码必须是6位数字");
}else{
alert("密码设置正确");
}
}

NaN也是一个number类型的一种,typeof NaN==number

var week=new Date().getDay();
var weekstr="";
console.log(week); // 0-6
// 多条件的判断 switch
switch(week){
case 0:
weekstr="日";
break; // 退出
case 1:
weekstr="一";
break;
case 2:
weekstr="二";
break;
case 3:
weekstr="三";
break;
case 4:
weekstr="四";
break;
case 5:
weekstr="五";
break;
default:
weekstr="六";
}
document.write("今天是星期"+weekstr);

for循环嵌套:

外层为假时内层不执行;

先执行外层,再执行内层;当内层为假时再执行外层。


JS函数:

函数执行完return之后立即停止并退出函数。

如果return后面没有值,默认返回undefined


js非严格模式下,可以使用arguments来改变传入的参数的值

function inner(){
// arguments
console.log(arguments.length);
console.log(arguments[1]); // 索引是从0开始的正整数
}
inner(10,5);
function add(num1,num2){
arguments[0]=99;
console.log(num1);
}
add(55,88)

JS内置对象【数组】:

创建数组的两种方式:

new Array()

字面量方式 []


arr.length 获取数组长度

过设置length可以从数组的末尾移除项或者添加新项


统计员工工资的代码:

(1)   不停的接收用户输入的员工的工资,直到用户输入“退出”便不再弹出“输入工资”的窗口

(2)   把用户输入的数据保存在一个数组中

var input,arr=[];
while(input!='退出'){
input=prompt('请输入员工工资');
arr[arr.length]=input;
}
arr.length-=1;//不存入'退出'
document.write(arr);

数组的栈方法:

// push从数组末尾加入
var colors=new Array("red","green");
var len=colors.push("blue","yellow","blank");
console.log(len);
// unshift从数组头部加入
var nums=[2,7,8,6];
var size=nums.unshift(99,66);
// pop从数组尾部删除,返回值是被删除的元素
var n=nums.pop();
console.log(nums);
// shift从数组头部删除,返回值是被删除的元素
var m=colors.shift();
console.log(m);
// join 把数组元素转为字符串
var nums=[2,4,5];
var str=nums.join(); //2,4,5
var words=["border","left","color"];
// border-left-color
var wordstr=words.join("-");
console.log(wordstr);
// reverse 数组中元素反序
nums.reverse();
console.log(nums);
var strs=["a","b","c","d"];
// 返回dcba这个字符串
var newstr=strs.reverse().join("")
console.log(newstr);
// 29,5,24,17,32
var arr=[9,23,15,-99,88,12,-2];
//sort()对数组元素进行排序,按字符串格式进行排序
var _arr1=[8,95,31,1,5]; console.log(_arr1.sort());//输出1,31,5,8,95,因为会先将元素转换为字符串,用字符串的首字符进行比较,
//如果第一个字符相同,继续比较第二个字符
//针对上面的情况,使用以下方法解决
// 降序 return 参数1<参数2
arr.sort(function(a,b){return a<b});
// 升序 return 参数1>参数2
arr.sort(function(a,b){return a>b});
console.log(arr);
var arr1=["a","b","c"],
arr2=["d","e",1,3],
arr3;
// concat 连接两个或多个数组
arr3=arr1.concat(arr2,["m",99,8]);
console.log(arr3);
// slice(start,end) end下标 截取数组一部分返回
// 包含start,不包含end
// start负数,就是数组长度+该长度
// 如果没有end,就从start一直到结束
var colors=["red","green","blue","yellow","orange"];
var newColors=colors.slice(1,3);
var newColors2=colors.slice(2,4);
var newColors3=colors.slice(-4,3); // 1,3
console.log(newColors3);
// 拷贝数组的方法
var a=[1,"yes",3],
b;
// 1、数组遍历,push
b=new Array();
for(var i=0;i<a.length;i++){
b.push(a[i]);
}
// 2、concat()
b=[].concat(a);
// 3、slice();
b=a.slice(0);
console.log(b);
//splice返回值是被删除的项,如果没有删除则返回[]
var arr=["a","b","c","d","e","f"];
// 删除,从index开始删除count个数,返回被删除的
// splice(index,count)
// count为0 则不删除;count不设置,则从Index开始删除到最后
var delArr=arr.splice(2,3);
// 插入,从index开始,删除count个,插入item1...
// splice(index,count,item1...)
var insertArr=arr.splice(3,0,"m","n",88);
// 替换
var replaceArr=arr.splice(1,2,"x","y","z");
console.log(arr);
console.log(replaceArr);
var nums=[1,7,5,7,8,1,6,9];
//indexOf(seachvalue,startIndex)
//返回查找的项在数组中的位置,没有则返回-1
var pos=nums.indexOf(7,2);
//lastIndexOf()从数组末尾开始查找
var pos=nums.lastIndexOf(1);
var pos=nums.indexOf("7");
console.log(pos);

indexOf()方法有兼容性问题,解决方案:

// 封装一个方法实现indexOf的功能
function ArrayIndexOf(arr,value){
// 检测value在arr中出现的位置
for(var i=0;i<arr.length;i++){
if(arr[i]===value){
return i;
}
}
return -1;
}

JS基础-语法+流程控制语句+函数+内置对象【数组】的更多相关文章

  1. 二、JavaScript语言--JS基础--JavaScript进阶篇--JavaScript内置对象

    1.什么事对象 JavaScript 中的所有事物都是对象,如:字符串.数值.数组.函数等,每个对象带有属性和方法. 对象的属性:反映该对象某些特定的性质的,如:字符串的长度.图像的长宽等: 对象的方 ...

  2. js简介 基本操作 以及循环语句 内置对象 函数044

    js 全称 javascript 从交互的角度 描述行为 一 .js注释方法: //单行注释    声明变量 var 二 .声明多个变量 :   var a = '2' ,b = 4, c = tru ...

  3. js 内置函数 内置对象

    1.内置函数 Object Array Boolean Number String Function Date RegExp Error 2.内置对象 Date JSON

  4. javaweb基础(17)_jsp九个内置对象

    一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...

  5. JS基础_流程控制语句

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. Java基础语法—流程控制语句

    在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的.所以,我们必须清楚每条语句的执行流程.而且,很多时候要通过控制语句的执行顺序来实现我们想要的功能. 3.1 流程控制语句分类 ​ ...

  7. python基础语法18 类的内置方法(魔法方法),单例模式

    类的内置方法(魔法方法): 凡是在类内部定义,以__开头__结尾的方法,都是类的内置方法,也称之为魔法方法. 类的内置方法,会在某种条件满足下自动触发. 内置方法如下: __new__: 在__ini ...

  8. java基础(5):流程控制语句(switch)、数组

    1. 流程控制语句(续) 1.1 选择结构switch switch 条件语句也是一种很常用的选择语句,它和if条件语句不同,它只能针对某个表达式的值作出判断,从而决定程序执行哪一段代码.例如,在程序 ...

  9. JavaScript -- 内置对象数组

    数组 创建数组的基本方式有两种: 1.使用 Array构造函数 语法:new Array() 小括号( )说明: (1)预先知道数组要保存的项目数量 (2)向Array构造函数中传递数组应包含的项 2 ...

随机推荐

  1. Codeforces_828

    A.模拟,注意单人的时候判断顺序. #include<bits/stdc++.h> using namespace std; int n,a,b; int main() { ios::sy ...

  2. Codeforces gym101755H Safe Path(bfs)

    题意: 给以一个网格图,有起点终点和一些怪兽,可以上下左右走,不能走到距离怪兽曼哈顿距离为d以内的地方,问到终点最短路径 n*m<=2e5,d<=2e5 思路: 因为n*m的范围,不能直接 ...

  3. 杂记 -- 关于vue-router样式、vuecli引用全局js函数、vue.slot用法

    1.routerLinkTo 样式设置 首先,点击routerlink标签如下图:添加:router-link-active,router-link-exact-active两个类的样式 router ...

  4. redis命令总结与持久化

    上篇redis文章为大家介绍了redis与它的部署工作.这次我们来说一下redis的操作命令与持久化 一.命令总结 1)String操作 6379> set k1 v1 #设定值 6379> ...

  5. css浮动(float)详解

    一.什么是浮动? 浮动,顾名思义,就是漂浮的意思.指的是一个元素脱离文档流,悬浮在父元素之上的现象. 二.如何产生浮动? 给元素本身添加float属性 float值: left 元素向左浮动. rig ...

  6. Visual C# 2015调用SnmpSharpNet库实现简单的SNMP元素查询

    一开始调研发现有几个SNMP的库, 一个是net-SNMP,这个好像是linux用的多 一个是微软自己的WinSNMP,这个没有例子,不太好操作 一个是SnmpSharpNet,这个有些例子比较好, ...

  7. docker:搭建ELK 开源日志分析系统

    ELK 是由三部分组成的一套日志分析系统, Elasticsearch: 基于json分析搜索引擎,Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片 ...

  8. centos6.5安装openLDAP2.3

    查看系统版本,内核,定时任务同步时间,关闭防火墙selinux等 [root@ldap-master ~]# cat /etc/redhat-release CentOS release 6.5 (F ...

  9. Navicat 导入数据时报Incorrect datetime value: '0000-00-00 00:00:00.000000' 错误

    今天重装了个系统,装好MySQL和Navicat之后导入SQL时报了Incorrect datetime value: '0000-00-00 00:00:00.000000' 错误, 查了资料说是m ...

  10. 【转载】详解linux下的串口通讯开发

    来源:https://www.cnblogs.com/sunyubo/archive/2010/09/26/2282116.html 串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使 ...