javascript
面对对象的弱类型脚本语言,网页的特效,交互
运行 在拥有js引擎的地方 浏览器
数据类型
基本数据类型:number 数字型
string 字符串
boolean 布尔型 TRUE/FALSE
undefined 未定义 有变量没有值
null 空值
symbol 独一无二的
引用数据类型:Object
变量
变量存储在哪 操作系统内存 栈内存 基本数据类型,自动产生 堆内存,自动产生
特殊的地方:var变量提升
当浏览器在执行js的程序的时候js引擎【js作用域顶层】: 会先声明变量 再去给变量赋值
1.变量的命名规范:不能以数字或者是除了$和_之外的特殊符号开头,且不能包裹特殊的符号,不能使用js的保留字命名
(见名知意 不能用拼音)
2.如果变量名是两个英文单词意思组成:采用小驼峰命名法
小驼峰:background-color => backgroudColor 一般用来定义变量 对象 函数的名字
大驼峰:background-color =>BackgroundColor 一般用来定义接口和类的名字
for循环
for(初始条件;判断语句;变化量){
js脚本
}
运行顺序:初始条件 = > 判断语句 => js脚本 => 变化量=>判断语句=>js脚本=>变化量=>判断语句
穷尽算法
//求100的约数(a/i i被a整除)
var a=100;
for(var i=0; i<=100;i++){
if(a % i ==0){
console.log(i); //输出:2.4.5.10.20.25.50.100
}
}
//随机约数
var b=parseInt(prompt('输入'));
for(var i =1; i<=b;i++){
if(b % i ==0){
console.log(i);
}
}
累加器
//1-100的和
var sum =0
for(var i=1 ; i<=100;i++){
sum +=i;
}
console.log(sum);//5050
//1-200之间的质数
for(var i=1;i<=200;i++) { //质数循环次数
var num=0; //获取的因数次数 46个2次
for(var a=1;a<=i;a++){//因数循环次数
if (i % a ==0) {
num += 1;
}
}
if (num==2) {
console.log(i+'质数');//质数i
//3 5 7 11 13 17 19...199
}
}
break 跳出当前循环
for (var i= 0; i <= 10;i++) {
//if(i == 6) break;//结束循环 跳出当前循环
if(i == 6) continue;//跳出本次 执行下面的循环
console.log(i);
}
function fun(){
console.log(9);//9
return false;//返回 结束
console.log(8);
}
fun()
while 和 do while
//常用 for循环
var sum =0;
for (var i=0; i<5; i++) {
sum+=1;
console.log(sum);
}
// while循环
var i = 0;
var sum1 = 0; // 初始化
while (i < 6) { //判断语句 循环条件
sum1 += 1 // js脚本 循环体
console.log(sum1); // js脚本 循环体
i++; //增量 操作表达式
}
//do...while循环 do {条件是否满足都会执行一次}
var i = 0;
var sum2 = 0; // 初始化
do{
sum2+=1;
console.log(sum2);
i++;
}while(i<11)
js函数
//一. 函数:封装代码 复用代码块
function XiaoQiao(name,age){//形参 变量
console.log(name,age);
console.log(11);//11
return name +age;//返回 后面代码不执行
console.log(66);
}
XiaoQiao('xqxq',21);//实参 xqxq 21
//2.
console.log(a);
var a=10; //在下覆盖log(a)、a()
//函数也会提升 比变量提升的优先级更高 重名覆盖函数 不能执行
function a(){//在上提升
console.log(1128);
}
a()
特殊函数
//1.自定义函数
fun()
function fun(){
console.log(1156);
}
fun() //1156 x2
//2.函数表达式
//fn()//报错
//函数表达式 先声明变量 fn()不能在上面调用
var fn =function(){
console.log(911);
}
fn()//911
//3.fun1高阶函数 callback回调函数
function fun1(callback){
callback && callback('xq',23)
}
fun1 (function(name,age){
console.log(name,age);
})
//fun2高阶函数
function fun2(){
return function(name,age){
console.log(name,age);
}
}
fun2()('yyqx',22);
//liff函数 自执行函数
// (函数调用
;(function(a){//形参
console.log(a);//输出:111
})(111)//实参
函数封装
//函数封装 一个函数做一件事 1-100质数
//3.求因数数量和
function getCount(i){
var sum=0;//因数的数量和
for (var j=1;j<=i;j++) {
if(i % j ==0){
sum+=1
}
}
return sum;
}
//2.判断是否为质数
function isZs(i){
if (getCount(i)==2) {
return true;
} else{
return false;
}
}
//1.求自然数 输出质数
function getZs(i){
for(var i=1;i<=100;i++){//自然数
if(isZs(i)){//是否是质数
console.log(i+'质数');
}
}
}
getZs() //输出:2 3 5 7 9...97
//哥德巴赫猜想算法
//大于5的整数可以拆分为3个质数之和 大于5的整偶数可以拆分为2个质数之和
//3.求因数数量和
function getCount(i) {
var sum = 0; //因数的数量和
for (var j = 1; j <= i; j++) {
if (i % j == 0) {
sum += 1
}
}
return sum;
}
//2.判断是否为质数
function isZs(i) {
if (getCount(i) == 2) {
return true;
} else {
return false;
}
}
//1.自然数 1-100偶数
for (var i = 1; i <= 100; i++) { //求自然数
if (i % 2 == 0) {
for (var a = 1; a < i; a++) {
if (isZs(a) && isZs(i-a) && i>=5) {
console.log(i+'偶数拆分为'+a+'和'+(i-a)+'这俩质数之和');
}
}
}
}
21.斐波拉契 数列
// 1.递归 调自己本身这个函数 (无条件则死循环)
var sum =0;
function fun(a,b){
console.log(a+b);
sum++;
if (sum>10) return;//10次3
fun(1,2)
}
fun(1,3)//4
//2.斐波拉契数列前20个1、1、2、3、5、8、13、21、34、……
for(var i=0;i<20;i++){
console.log( fn(i));
}
function fn(i){
if(i == 0){
return 1;
}else if(i==1){
return 1;
}else{
return fn(i-1)+fn(i-2);
}
}
//1+2+3+4+5+...+n的和 n=10
function getCount(n){
var flage=n> 0&& (n+=getCount(n-1));//10+9+8+7...+1
return flage;
}
console.log( getCount(10));