案例:用函数求1到100的和
var sum = 0;
function sayhi(){
for(var i = 0; i <= 100; i++){
sum += i
}
console.log(sum);
}
sayhi()
// js 预解析
1. console.log(a); //函数体
var a = '我是变量';
// 函数权重大于 var
function a() {}
console.log(a); //我是变量
2. myFun(10,20);//报错 只提升var
var myFun = function(a,b){
return a + b;
}
3. var i = 1;
//i++ 先返回 后自增
i = i++
console.log(i);// 1
4. function text(a,b){
console.log(a);
console.log(b);
var b = 234
console.log(b);
a = 123;
function a(){}
console.log(a);
var a ;
b = 234;
var b = function(){}
console.log(b);
}
text(1)
// 对象
1. var zs = {
name : 'lw',
age : 18,
height : 180,
weight : 120,
sayHi : function() {
console.log('hello world');
}
}
console.log(zs.name);
console.log(zs['age']);
zs.sayHi()
// 构造函数
// 构造函数中的 this 指向 new 出来的新对象
// new 的作用:
// 1 先调用函数
// 2 在内存中创建一个空对象
// 3 把this 指向这个空对象 (把空对象给this了)
// 4 把创建好之后的空对象返回出去
// function Fn(name,age,type,attack){
// this.name=name;
// this.age=age;
// this.type=type;
// this.attack = attack;
// }
// var f1 = new Fn("zs",18,"法术攻击")
// var f1 = new Fn("zs",18,"法术攻击")
// var f1 = new Fn("zs",18,"法术攻击")
// console.log(f1);
Math.max 自己封装一个类似于Math.max 的用法
// console.log(Math.max(100,12,12.2));
// function getmax() {
// // 先拿到所有的实参
// var max = arguments[0]
// for( var i = 0 ; i < arguments.length; i++){
// if(max < arguments[i]){
// max = arguments[i]
// }
// // console.log(max);
// }
// console.log(max);
// }
// var f1 = getmax(1,2,3,4,5,6,7,8,9);
var obj = {
getMax: function () {
var max = arguments[0] || -Infinity;
for (var i = 1; i < arguments.length; i++) {
if (max < arguments[i]) {
max = arguments[i]
}
}
return max
},
getMin: function () {
var min = arguments[0];
for(var i = 0 ;i < arguments.length; i++){
if( min > arguments[i]){
min = arguments[i];
}
}
return min
}
}
console.log(obj.getMax(1, 2, 3, 4, 5, 6, 7, 8, 9));
console.log(obj.getMin(2, 3, 4, 5, 6, 7, 8, 9));
//用户猜数字大小游戏
function getRandom(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
var random = getRandom(1, 50)
while (true) {
for (var i = 0; i <= 3; i++) {
var num = prompt('请随机输入一个数字')
if (num > random) {
alert('大了')
} else if (num < random) {
alert('小了')
} else {
alert('正确')
break;
}
if (i == 3) {
alert('您已经猜了三次了!')
}
}
}
//检测是否为数组
1、instanceof 例 arr instanceof Array arr的构造函数是不是array
2、Array.isArray(参数)
//数组反转
reverse
//冒泡排序(数组排序)
sort
var arr1 = [13,4,77,1,7];
arr1.sort(function(a,b){
return a - b;// 从小到到排序(升序)
return b - a;// 从大到小排序(降序)
});
console.log(arr1)
//返回数组元素索引号的方法
indexOf()
//他只会返回第一个满足条件的索引号
//如果找不到该元素 则返回 -1
lastIndexOf()
// 从后往前找 找到返回该元素的索引号 找不到返回 -1
//封装一个 数组去重
// var arr = [1,1,1,2,3,4]
function unique(arr) {
var newArr = [];
for (var i = 0; i < arr.length; i++){
if(newArr.indexOf(arr[i]) === -1){
newArr.push(arr[i]);
}
}
return newArr;
}
// unique([1,1,2,2,3,4,4])
// console.log(unique([1,1,2,2,3,4,4]));
var ab = unique([1,1,2,2,3,4,4])
console.log(ab);
// 数组转换为字符串
// 1. toString() 将我们的数组转换为字符串
var arr = [1,2,3]
console.log(arr.toString());
// 2. join(分隔符)
var arr1 = ['green','blue','red']
console.log(arr1.join('-'));
//str[index] h5新增的 根据位置返回字符
// 统计出现最多的字符和次数
var str = 'abcoefoxyozzopp';
var obj = {}
for (var i = 0; i < str.length; i++) {
var chars = str.charAt(i);
if (obj[chars]) {
obj[chars]++;
} else {
obj[chars] = 1
}
}
console.log(obj);
var max = 0;
var ch = '';
for(var k in obj){
if(obj[k] > max){
max = obj[k]
ch = k;
}
}
console.log(ch);