2019-12-09 从零开始的JS学习 二

转换为布尔型

Boolean()函数 说明:其他类型转成布尔值 实例:Boolean('true')
代表空,否定的值会被转换为false,如'' 0 NaN null undefined
其余的值都会被转换成true

运算符

console.log(1 + 1);
console.log(1 - 1);
console.log(1 * 1);
console.log(1 / 1);

//%取余运算
console.log(1 % 1);

//递增(++)和递减(--)
//前置递增运算符 先+1后返回值
var num = 1;
++num;//2 
++num + 1;//3
num++ + 1;//2 num为2

//前置自增和后置自增如果单独用 效果是一样的 否则不一样

//比较运算符
< 小于
> 大于
>= 大于等于
<= 小于等于
== 判断号
!= 不等号
===  !==  全等 要求值和数据类型都一样

//逻辑运算符
&& 逻辑与
|| 逻辑或
! 逻辑非

//运算符优先级
一元运算符里面的逻辑非优先级很高
逻辑与比逻辑或优先级高

流程控制-分支

if (条件表达式) {
//执行语句
}
//
if () {
}else if () {
//执行
}else if () {
//执行
}else {
//总结语句
}

三元表达式

条件表达式? 表达式1:表达式2 //如果为真执行表达式1为假执行表达式2

分支流程控制语句

switch(表达式) {
case 条件1:
执行;
break;
case 条件2:
执行;
break;
default:
执行;
}
//我们开发 表达式经常写成变量
//匹配的时候是 全等 必须值和类型都一致才会进去
//break如果当前的case里面米有break则不会退出switch 继续执行下一个case

switch 和if else if语句的区别

一般情况下可以相互替代
1,一般确定值的情况下用switch 区间范围用if else if
2,switch执行率更高直接跳到符合条件的选项 if else if 每个都要判断
3,分支多用switch 少用if

循环控制

//for 循环
for (let i = 0; i < 100; i++) {
                console.log(i);
}

//九九乘法表
var str = '';
for (var i = 1; i <= 9; i++) {
    for (var j = 1; j <= i; j++) {
        str += j + '*' + i + '=' + i*j + '  ';
        // console.log(str);
    }
str = str + '\n'
}
console.log(str);

//while循环
var i = 0;
while(i < 5) {
    console.log(i);
    i++;
}

//do while循环
var i = 0;
do {
    console.log(i);
    i++;
} while(i < 5)

continue关键字 跳出本次循环 进入下一次循环
break关键字 结束所有循环

数组 可以存放任意的数据类型

//创建数组的两种方式
//利用new创建数组
var arr = new Array();
//利用数组字面量创建数组
var arr = []

//访问数组元素(索引)
arr[0]

//获取长度
var array = ['1','2'];
console.log(array.length);

//求数组中的最大值
var array = [2,54,43,45,67,3,56,78];
var maxNum = array[0];
for (let index = 0; index < array.length; index++) {
    let num = array[index];
    if (num > maxNum) {
        maxNum = num
    }
}
console.log(maxNum);

//冒泡排序 双重数组
var array = [2,54,43,45,67,3,56,78];
for (let i = 0; i < array.length-1; i++) {
    for (let j = 0; j < array.length - i - 1; j++) {
        if (array[j] > array[j + 1]) {
            var temp = [];
            temp = array[j];
            array[j] = array[j + 1];
            array[j + 1] = temp;
        }
    } 
}
console.log(array);

函数

函数就是封装了一段可以被重复执行调用的代码块:大量代码重复使用

//声明函数
function log() {
    console.log('你好');
}
log();

//带参数的函数
function log(value) {
    console.log(value);
}
log('你好测试');
log(1);

//js语法自由度相当高 多参数 多传参会忽略 少传参没传的形参为undefined 计算结果就会使NaN

//带会返回值的函数
func name() {
return 2;
}
var name = name();//name为2

//arguments对象的使用
        function fn() {
            console.log(arguments);
            
        }
        fn(1,2,3);
//伪数组 并不是真正意思上的数组
//具有数组的length属性
//按照索引的方式进行存储的
//没有真正数组的一些方法 pop() push()

return 有终止函数的作用
函数如果没有return 则返回undefined

//定义函数的两种方式
//利用函数关键字自定义函数
function fn() {
}

//函数表达式(匿名函数)
var 变量名 = function(){
//代码
};
var num = 10;//↑相似

作用域

就是代码名字在某个范围内起的作用
变量的作用域: 根据作用域的不同 我们变量分为全局变量和局部变量
全局变量: 在全局作用域下的变量 在全局下都可以使用
局部变量: 在局部作用域下的变量 后者在函数内部的变量就是局部变量
函数的形参也是局部变量
链式规则(就近原则)

预解析

1,我们js引擎运行js 分为两步: 预解析 代码执行
2,预解析 js引擎会把js里所有的 var 还有function 提升到当前作用域的最前面
3,代码执行 按照代码书写的顺序从上往下执行
4,预解析分为变量预解析(变量提升) 和函数预解析(函数提升)
变量提升:就是把所有变量声明提升到当前的作用域最前面
函数提升:就是把所有函数的声明提升到当前作用域最前面

f1();
console.log(c);
console.log(b);
console.log(a);
function f1() {
    var a = b = c = 9;
    console.log(a);
    console.log(b);
    console.log(c);
}
//作用域和预解析经典案例 (9,9,9,9,9,报错)

js对象

跟swift中的对象一个意思用来方便存储一个事物的各种属性

//利用对象字面量创建对象{}
var obj = {};//创建一个空的对象
var person = {
name: '张三' ,
age: 18 ,
sex : '男' ,
sayHi: function() {
//代码
}
}
//里面的属性或者方法我们采取键值对的形式 
//多个属性或者方法中间用逗号隔开
//方法冒号跟的事一个匿名函数
//调用对象的属性 我们采用点语法
person.name

//里面new Object 来创建对象
var obj = new Object();//创建一个空对象
obj.name = '张三';
obj.play = function() {
//执行代码
}

//利用构造函数创建对象
//原因前面两种方法一次只能创建一个对象
function 构造函数名() {
this.属性 = 值;
this.方法 = function() {
}
}
new 构造函数名();//调用构造函数

//构造函数实例
//构造函数
function Person(name,age,sex) {
    this.name = name;
    this.age = age;
    this.sex = sex;
    this.sing = function(action){
        console.log(action);
        
    }
}
let object = new person('张三','18','人妖');
console.log(object.age,object.name,object.sex);
object.sing('游泳');
//1构造函数名字首字母大写
//2我们构造函数不需要return就可以返回结果
//3我们调用构造函数必须要使用new

//遍历对象
for (var key in object) {
    console.log(key);//属性名称
    console.log(object[key]);//属性值
}

js内置对象

js中的对象分为: 自定义对象,内置对象,浏览器对象
内置对象: js语言中自带的一些对象,供开发者使用,提供了常用的必要功能(属性和方法)
内置对象优点: 帮助我们快速开发

//Math是一个内置对象,它具有数学常数和函数的属性和方法
//数学对象,不是一个构造函数,所以我们不需要new来调用,而是直接使用里面的属性和方法即可

//圆周率
console.log(Math.PI);

//最大值
console.log(Math.max(2,3,56));//56

//最小值
console.log(Math.min(2,3,56));//2

console.log(Math.min(2,3,'老师'));//NaN

console.log();//-Infinity 负无穷大

//利用对象封装自己的数学对象
var mayMath = {
Pi: 3.14;
max: function() {
}
min: function() {
}
}

//绝对值方法
console.log(Math.abs(-1)); //1
console.log(Math.abs('-1')); //1  隐式转换
console.log(Math.abs('字符串')); //NaN

//向下取整
console.log(Math.floor(1.2)); //1

//向上取整
console.log(Math.ceil(1.2)); //2

//四舍五入
console.log(Math.round(1.2)); //1

//随机数 0-1之间
console.log(Math.random()); //[0,1)

//得到两个数之间的随机整数 并且包含这两个整数
function getRandom(min,max) {
    return Math.floor(Math.random() * (max - min + 1) + min);
}

console.log(getRandom(1,5));
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容