<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<!--
js ecmaScript5.0 es5 原生js
6.0 es6 在原生js基础上 更新 前端-后端 后端基本一样
es7....
//功能: 数据交互
特效
//大量的逻辑代码
表单验证
正则表达式
方式:1.js里面的基本语法
变量 闭包 逻辑结构 循环结构 函数(参数 自执行 匿名函数 返回值函数问题 函数递归)
2.window 对象 -document(dom--操作) --history历史 ---location 地址对象 (bom-操作)
3.js里面的内置对象 Array String Date Math
4.继承之类 (面向对象的开发 原型链继承 构造继承 实例继承 混合继承)
5.模式 (单例模式)
6.ajax(原理 跨域的问题)
7.js 异常 try catch
11天
js如何嵌入网页使用--类似css使用方式 直接在script src引入(外部文件) 或者直接写在页面里面 script 里面写的代码 --放置的位置 取决于加载的位置
-->
</body>
</html>
JS循环结构:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script>
/*
* 循环结构
* for while do while
* */
/*
* 最简单的for怎么写 死循环
* */
/*for(;;){
}*/
/* for(var i=0;i<10;i++){
console.log(1);
}
for(var i=10;i>=0;i--){
}*/
/* for(var i= 0,k=10;i<k;i++)
{
console.log(1);
}*/
/*
* 金子塔线条
* */
/*var s = "ab";
var l = "de";
var h="c";
console.log("ab" +"c"+ "de");
for(var i=1;i<50;i++)
{
document.write("<hr style='width:"+(i*10)+"px;'/>")
}*/
/*
* 金子塔 乘法表
* */
for (var i = 1; i < 10; i++) {
for (var k = 1; k <= i; k++) {
/* if (k * i < 10) {
document.write("<span>" + (i + "*" + k + "=" + k * i + " ") + "</span>");
}
else {
document.write("<span>"+(i + "*" + k + "=" + k * i + " ")+"</span>");
}*/
document.write("<span>"+(i + "*" + k + "="+(k * i<10?(k * i) + " ":(k*i)+" "))+"</span>");
}
document.write("<br>");
}
//打印***
//******
// ******
// ******
// ******
for(var i=0;i<4;i++)
{
for(var k=0;k<2*i;k++)
{
document.write("_");
}
for(var k=0;k<6;k++)
{
document.write("*");
}
document.write("<br>");
}
</script>
<style>
body {
text-align: center;
}
span {
display: inline-block;
width: 100px;
height: 30px;
text-align: center;
line-height: 30px;
border: 1px solid black;
}
</style>
</head>
<body>
</body>
</html>
JS函数样式:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script>
/*
* js里面的函数问题
* 什么是函数? (方法 调用完成 )
*函数的声明规则 关键字 function
* function name(){}
* 函数的调用规则 name();
* 函数的声明提前 在代码执行之前提前声明
* */
//声明函数
name();
function name(){
console.log(1);
}
//函数里面的其他问题
//参数问题 返回值问题 函数的自执行问题 匿名函数
/*
* 1.函数的参数 参数:形参 调用函数传递的值 实参
* */
student(1,2,3);
function student(name,sex,age){
console.log(name,sex,age);
}
//无参函数
//arguments 函数特有的属性 里面是函数的相关参数
stu(1,2,3,4,5,6);
function stu(){
/*arguments.length*/// 参数列表的长度
console.log(arguments[0],arguments[1],arguments[2],arguments[3]);
}
//函数有无返回值问题 return 返回 直接跳出 后续代码不执行
console.log(showname());
function showname(){
//代码
return 1;
}
//自执行函数 匿名函数 函数没有名称
(function (){
console.log(123);
})();
(function (a,b){
console.log(a,b);
})(1,2);
//匿名函数 函数没有名称
console.log(fun);//变量也可以提前声明
//fun() 报错 fun is not function
//下面这种声明方式的函数 不能被提前声明
var fun=function (){
console.log(1);
}
fun();
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script>
/*
* 循环结构
* while (先判断)
* do while(先执行后判断 至少一次)
*
* */
var n=0;
while(n>1){
n++;
console.log(n);
}
var m=0;
do{
m++;
console.log(m);
}while(m>1);
</script>
</head>
<body>
函数递归:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script>
/*
* 函数的递归 反复执行自己本身
* */
/* show();
function show(){
//写代码
show();
}*/
/*
*阶乘
* */
/* function fun(num) {
if (num == 1) {
return 1;
}
return num * fun(num - 1);
}
console.log(fun(5));*/
/*fun(5) -----5*4*3*2*1
fun(4) -----4*fun(4-1)
fun(3)------3*fun(3-1)
fun(2) -----2*1*/
//?? fun(5)=5*fun(4)
/* 5*fun(4) //fun(4)=4*fun(3)
4*fun(3)
3*fun(2)
2*fun(1)
5*4*3*2*1*/
/*寻找1~1000之内,所有能被5整除、或者能被6整除的数字*/
/* for(var i=1;i<1000;i++)
{
if(i%5==0||i%6==0)
{
console.log(i);
}
}*/
/*
*
* 游戏玩儿法就是,大家轮流报数,如果报到能被7整除的数字,或者尾数是7的数字,都算踩地雷了。就应该罚唱歌。
请在控制台输出1~60之间的所有“安全数”。
* */
/* for(var i=1;i<60;i++)
{
if(!(i%7==0||i%10==7))
{
console.log(i);
}
}*/
/*
* 1-100 所有的素数 只能被1 和 自身 除 ----除了1和本身 其他的数能除的就不素数
* */
for (var i = 2; i < 100; i++) {
var issu = false;//判断你到底是不是素数 true不是 false是
for (var k = 2; k < i; k++) {
if (i % k == 0) {
issu = true;
}
}
if (!issu) {
console.log("素数:" + i);
}
}
/*
* 找数字的因数
* */
/* var a = 15;
for (var i = 0; i < a; i++) {
if (a % i == 0) {
console.log(i);
}
}*/
/*Fibonacci 11235....*/
/*
* 第几位数列的值
* 递归
* */
/* function fun(num){
if(num<=2)
{
return 1;
}
return fun(num-1)+fun(num-2);
}
console.log(fun(5));*/
</script>
</head>
<body>
</body>
</html>
JS字符串常用方法:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script>
/*
* 字符串的方法
* 查找字符的方法
* */
var str = "a|b|c|d|efg";
/*一个参数 找到了返回当前字符的索引位置 没找到直接返回-1*/
console.log(str.indexOf("m"));
/*两个参数 找到字符返回字符的索引位置 没找到返回-1 从哪个位置开始找*/
console.log(str.indexOf("a", 0));
/* str.lastIndexOf()*///后往前面找
//遍历字符串 获取每个字符的索引位
//遍历
//charAt(pos) 根据索引获取对应的字符
for (var index in str) {
/*console.log(str[index]);*/
console.log(str.charAt(index));
console.log(str.charCodeAt(index));//根据索引获取对应的ascii值
}
var as = 97;
console.log(String.fromCharCode(as));
//其他方法 split 将字符串转化为集合
console.log(str.split("|"));
//集合转化为字符串
var ss = str.split("|");
console.log(ss.join(""));
//字符串的拼接 concat 合并
var c1 = "abcb";
var c2 = "def";
console.log(c1.concat(c2));
//替换 replace 替换
console.log(c1.replace("b", 1));
//字符串的截取 substr(index,length)
console.log(str.substr(1, 4));
//substring(startindex,endindex);
console.log(str.substring(1, 4));
//查找索引
console.log(str.search("a"));
//大小写转化的方法toUpperCase() 转化大写 toLowerCase 转化为小写
console.log(str.toUpperCase().toLowerCase());
//slice 截取字符串
console.log(str.slice(0, 4), str);
</script>
</head>
<body>
</body>
</html>
重点:
浅谈JS闭包:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script>
/*
* 什么是闭包:使用别人的私有变量
* 优缺点:
* 缺点:会将闭包的值存在内存里面 会占用内存 ----网页的内存泄露
* 有点:可以使用局部变量
*
* 在做开发的时候尽量避免使用闭包
*
* */
/* function fun1(){
var a=10;
return a;
}
function fun2(){
console.log(fun1());
}
fun2();*/
/*function f1(){
var a=1;
t=function (){
a++;
}
return function (){
console.log(a);
}
}
var a=f1();//function (){console.log(a);}
t();
a();//2
t();
a();//3
var a1=f1();//function (){console.log(a);}
t();
a1();//2
t();
a1();//3*/
/*function f1() {
var n = 999;
return function f2() {
return n;
}
}
//f1() function f2(){ return n;}
console.log(f1()());
console.log(f1());*/
/* var name="global";
function foo(){
console.log(name);
}
function fooOuter1(){
var name="local";
foo();
}
fooOuter1();
function fooOuter2(){
var name="local";
function foo(){
console.log(name);
}
foo();
}
fooOuter2();*/
/* function test() {
var value =2;
return function (params) {
console.log(value * params);
console.log(window.value * params);
}
}
value=3;
var a = test();//后边的匿名函数
a(2); //params=2*/
/* function f1(){
var b=10;
return function (){
b++;
console.log(b);
}
}
f1()();*/
var m=0;
function f2(n){
temp=function (){
m+=n;
}
temp();
//方法的重写
f2.toString=function (){
return m;
}
return f2;
}
console.log(f2(1)(2)(3));//算和
var aa=123;
console.log(typeof aa.toString());;
</script>
</head>
<body>
</body>
</html>