与JavaScript的小故事
本人学习JavaScript其实吧也不能算是出于自愿的,在大二的时候加入了一个"组织",就成为了廉价劳动力哈哈哈哈哈,被安排去做前端,于是开始学习各种前端的基础知识,像什么JavaScript呀、CSS呀这些很基础的,至于以后的深入研究还有待学习,如果有一点点的编程基础就更好了,这样理解起来会比较方便,还有就是我说话可能不是很严肃,有怪莫怪噢
JavaScript运行环境及编辑
JavaScript其实吧就是一门神奇的语言,千万不要跟它较真,它不合理的地方多了去了,你可以直接在浏览器上跑简易的JS代码,就像这样
打开浏览器(我这是谷歌),最好是在一个空白页吧,右键鼠标选择"检查";直接当然F12也行哈哈哈
然后你就可以看到这样子,其中Console就是控制台,看到那个光标没有,对!那个就是我们可以敲入代码位置
我们试一下简单的代码嗷
这里的话呢,我们是定义了一个变量studentName,将它赋值为"老桃子",然后调用函数输出了变量的值和类型,超级简单的啦,这里想必大家都看得出来,虽然这里能够实现代码的运行,但是由于格式的问题吧,不太适合繁琐的代码,所以,我们需要一个编辑器!!!我的话呢用的是JetBrains WebStorm,这个玩意真的挺不错的,用过都说好哈哈哈哈,安装教程的话,有大佬已经写好了,大家要多支持原创哦。
变量
一、Number 整型、浮点型、负数、NaN(Not a number 一般报错的时候才会出现)、Infinity(无限大)、1.2e4(12000 科学计数法)
var int = 123456;
var float = 123.456;
var negative = -123456;
var not = NaN;
var biggest = Infinity;
var scient = 1.2e4;
alert("int = " + int
+ "\nfloat = " + float
+ "\nnegative = " + negative
+ "\nnot = " + not
+ "\nbiggest = " + biggest
+ "\nscient = " + scient)
二、String 字符串 一般可用单引号或者双引号,这个有覆盖的功能,还可用转义字符“ \ ”
var stu_name = "老桃子";
var stu_major = '软件工程';
var stu_info_1 = "'我是靓仔'";
var stu_info_2 = '"靓仔是我"';
var stu_text = " \" 在双引号中输出一个双引号";
alert("stu_name = " + stu_name
+ "\nstu_major = " + stu_major
+ "\nstu_info_1 = " + stu_info_1
+ "\nstu_info_2 = " + stu_info_2
+ "\nstu_text = " + stu_text)
三、Boolean 布尔值 true false 空字符串默认是false、NaN默认是false、null默认是false、undefined默认是false
四、Array 数组 [ ],由于js的弱类型,数组中的元素可以为任意类型
var a = [1,2,3]
var test = [1,"1",true,a]
alert(test[3][1])
if(test[2]){
alert("hhh")
}
五、Object 对象 { a : b , c : d}
var test = {"name":"老桃子","sex":"未知"}
alert(test + "\ntest[name] = " + test['name'] + "\ntest[sex] = " + test['sex'])
switch
switch关键字是对一个变量进行匹配,其中关键字case表示不同情况,break表示退出循环,default表示当不满足以上所有情况时执行语句
(1)判断的变量可以是任何类型
(2)如果不写break的话,那么无论是在哪里匹配到了都会执行完剩下的判断,很浪费时间
var major = '软件工程'
switch (major){
case '软件工程':alert("软件工程");break;
case '大数据与人工智能':alert('大数据与人工智能');break;
case '网络信息安全':alert('网络信息安全');break;
default:alert('error');
}
运算符
(1)% 求余(2)++ 自增(3)-- 自减(4)== 如果两边类型不同会做类型转换(5)如果是三等号的话,判断的时候不会做转换
var x = 10;x++;
var y = 3;y--;
alert("x = " + x
+ "\ny = " + y
+ "\nx%y = " + x%y)
var z = '11';
if(x == z) {
alert(x + " == " + z)
}else {
alert(x + " != " + z)
}
if(x === z) {
alert(x + " === " + z)
}else {
alert(x + " !== " + z)
}
函数
function test() { } 这样声明一个函数
function fun(array) {
var count = 0;
while(array[count]) {
if(array[count]%3 == 0) {
alert("本数组中第一个为三的倍数的数是第" + (count+1) + "个:" + array[count]);
break;
}
count++;
}
}
var array = [5,2,1,4,8,9,6,3,2,5,6,4,7,5,2,3,6,8,4,1,2,3,6,4,7,8,2];
fun(array)
还有另外一种写法 ( function() { } )( ); 前面的括号里面是匿名函数,后面的括号是触发的 这种写法作用是避免作用域污染
(function fun(array) {
var array = [5,2,1,4,8,9,6,3,2,5,6,4,7,5,2,3,6,8,4,1,2,3,6,4,7,8,2];
var count = 0;
while(array[count]) {
if(array[count]%3 == 0) {
alert("本数组中第一个为三的倍数的数是第" + (count+1) + "个:" + array[count]);
break;
}
count++;
}
})()
结果与上图一致
内置函数
confirm() 和 alert() 这两者都是弹出一个提示框,但是前者具有取消功能,后者只有确认的功能
prompt 弹出一个可输入的框框
alert('我是一个靓仔')
confirm('我是一个二五仔')
prompt('请随便输入点东西',1433223)
setTimeout() 实参是一个方法和单位为毫秒的时间,作用为延迟自动发生,这个的段位比较低在较后发生
setInterval() 实参是一个方法和单位为毫秒的时间,作用为每隔时间自动发生
clearInterval() 实参是一个计数器变量,作用为删除该计数功能
闭包
闭包的话,就是把一些功能封装起来,仅供内部人员可以直接使用,跟类很像
function student(name) {
var ID , sex;
return {
getName: function () {
return name;
},
setID: function (newID) {
ID = newID;
},
getID: function () {
return ID;
},
setSex: function (newsex) {
sex = newsex;
},
getSex: function () {
return sex;
}
}
}//闭包
var stu_1 = student("老桃子");
alert(stu_1.getName());
stu_1.setID(41812204);
alert(stu_1.getID());
stu_1.setSex("男");
alert(stu_1.getSex());