/**
* JavaScript简介
*/
一种动态类型、弱类型、基于原型的语言
常用来为网页添加各式各样的动态功能
为用户提供更流畅美观的浏览效果
/**
* 特点
*/
解释性脚本语言(代码不进行预编译)
主要用来向HTML页面添加交互行为
可以直接嵌入HTML页面
跨平台特性,在浏览器的支持下,可以在多种平台下运行
/**
* 演变历史
*/
1992年,Nombas公司开发出C--嵌入式脚本语言,后改名为ScriptEase,跟C++没有半毛钱关系,创新性地支持客户端执行
Netscape公司吸收了Nombas的开发理念,Brendan Eich设计研发liveScript,后与Sun公司合作更名为JavaScript
Windows公司不要脸的窃取JavaScript嵌入到IE,对外声称Jscript,页游方面称为ActionScript
ECMA组织提出ECMA-262规范,统一三家JavaScript,史称ECMAScript
/**
* JavaScript的组成部分
*/
ECMAScript 核心
DOM 文档对象模型
BOM 浏览器对象模型
/**
* Script结合方式一
*/
<script type="text/javascript">
</script>
/**
* Script结合方式二
*/
<script type="text/javascript" src="../js/index.js"></script>
/**
* JavaScript语法
*/
1)弱变量类型的语言
2)没有文档注释
3)带var声明表示局部变量,不带var声明表示全局变量
4)一个var允许声明多个变量,逗号分隔
5)建议每句以分号结束,允许不加分号
6)变量的书写区分大小写
var weMou = "nobody";
weMOu = 666;
weMou = true;
/**
* 变量分类
*/
原始类型 ~ Java中的基本数据类型
对象类型 ~ Java中的引用数据类型
/**
* 堆内存和栈内存
*/
栈内存特别小,存放所有的引用地址,和原始类型的值
堆内存相对大,存放对象类型的值
/**
* js中的原始类型
*/
1) number 数字
2) string 字符串
3) boolean 布尔值
4) null 手动置空对象,对象数据类型的占位符
5) undefined 变量未初始化
/**
* typeof
*/
返回原始类型数据的数据类型
/**
* js语句
*/
1)判断
if else
switch
2)循环
for
while do
do while
/**
* js中的运算
*/
NaN not a number 表示错误的数字,如:+"a"
2!=true
null==false
NaN!=NaN
/**
* 数据类型转换
*/
js是弱类型的语言,js会在需要的时候,自动转换数据的类型
/**
* Function对象 函数对象
*/
function funWenHou(){
return "Hello Word";
}
var funWenHou = function (){
return "Hello Word";
}
var funWenHou = new Function ("return 'Hello Word';");
console.log(funWenHou());
console.log(funWenHou.toString());
/**
* 属性和传参
*/
function funWe() {
console.log(this.length);//参数个数
console.log(arguments); //参数数组
}
funWe("we","we","zhang");
/**
* void()
*/
拦截方法的返回值
function funWe() {
return "wewezhang";
}
javaScript: void(funWe("wewezhang"));
/**
* void(0)
*/
href = "javaScript:void(0)"
src = "javaScript:void(0)"
阻止默认行为,阉割掉
/**
* 三大包装对象 - String对象
*/
java中有"自动拆装箱机制"
js中有"伪对象"的概念,原始类型可以直接调用对应包装类型的属性和方法
//创建,构造方法具有强制类型转换的功能
var weString = new String(此处允许填任何类型数据);
//属性
weString.length 字符串的长度
//方法,伪对象的方法
"helloWord".length
"hello".charAt(0) 返回指定索引位置的字符
"hello".concat("Word") 拼接字符串
"helloWord".slice(0,5) 截取字符串
"helloWord".substring(0,5) 截取指定索引号间的字符串
"helloWord".indexof("a",0) 从某索引开始检索字符串
"helloWord".split("") 分割为字符串数组
"helloWord".replace() 替换匹配正则
/**
* instanceof
*/
判断对象数据的类型是否为某种类型
var str = new String("wewezhang");
if (str instanceof String) {
}
/**
* Global对象
*/
不需要创建实例,即可直接调用全局属性和全局方法
encodeURI("") 用于对整体url编码,忽略特殊字符的编码
decodeURI("") 用于对整体url解码,忽略特殊字符的解码
encodeURIComponent("") 用于对url中的参数进行编码,同时会对特殊字符进行编码
decodeURIComponent("") 用于对url中的参数进行解码,同时会对特殊字符进行解码
parseInt("007")
parseFloat("8.88")
var x = parseInt("ax5");
if (isNaN(x)) {
console.log("是NaN");
} else {
console.log("不是NaN");
}
eval("console.log('这也太神奇了')");
Math.abs(-123.321) 取绝对值
Math.round(123.321) 四舍五入
Math.ceil(123.321) 向上取整
Math.floor(123.321) 向下取整
Math.random() 随机数
/**
* 数组Array对象
*/
var weArray = [1,2,3];
var weArray = new Array(1,2,3);
var weArray = new Array(8); //比较特殊,8表示数组长度
当参数只传递一个数字的时候,表示创建一个长度为数字的空数组
//压栈,按内容
var weArray = [1,2,3];
console.log(weArray);
weArray.push(4);
console.log(weArray);
weArray.unshift(0);
console.log(weArray);
//弹栈,按序列号
var weArray = [0,1,2,3,4];
console.log(weArray);
weArray.pop(4);
console.log(weArray);
weArray.shift(0);
console.log(weArray);
//reverse() 数组反转
var weArray = [0,1,2,3,4];
console.log(weArray);
weArray.reverse();
console.log(weArray);
//sort() 数组排序
var weArray = [1,3,1,8,4,1,5,2,8,9,1];
console.log(weArray);
weArray.sort(function(weNum1,weNum2){return weNum1-weNum2});
console.log(weArray);
weArray.sort(function(weNum1,weNum2){return weNum2-weNum1});
console.log(weArray);
/**
* Date
*/
var weDate = new Date();
var weDate = new Date(1490842239819);
console.log(weDate.getFullYear());
console.log(weDate.getMonth()+1);
console.log(weDate.getDate());
console.log(weDate.getHours());
console.log(weDate.getMinutes());
console.log(weDate.getSeconds());
console.log(weDate.getTime());
console.log(weDate.getDay());
/**
* Window对象
*/
浏览器自动创建,不需要程序员管理
window.alert("弹出警告框");
window.confirm("你真狠心这么做吗?");
window.prompt("请输入口令:床前明月寄相思");
/**
* 定时器
*/
var oInterval = setInterval(function(){
alert("wewezhang");
},1000);
clearInterval(oInterval);
var oTimeout = setTimeout(function(){
alert("wewezhang");
},1000);
clearTimeout(oTimeout);
/**
* 猜数字小游戏
*/
function funTest(number){
var iMou = Math.round(Math.random()*100);
iMou = number?number:iMou;
var iInput = window.prompt("请输入0到100之间的整数", 0);
if (isNaN(+iInput)) {
alert("输入不合理,请重新输入数字 "+iMou);
funTest(iMou);
} else {
if (+iInput==iMou) {
window.confirm("恭喜你蒙对了,是否继续玩")?funTest():true;
} else {
if (+iInput>iMou) {
alert("大了,请重新输入数字 "+iMou);
} else {
alert("小了,请重新输入数字 "+iMou);
}
funTest(iMou);
}
}
}
funTest();