2019-10-15

javaScript一些基本概念



1、<script>标签放在<body>底部,先显示页面可加快加载速度。

2、var 定义局部变量,省略则定义全局变量,但是不推荐。


可一次定义多变量(,号分隔) 

var message = "h1", found = false, age = 20;

3、数据类型: 

5种基本数据类型 : undefined,Null,Boolean,Number,String; 

1种复杂数据类型 : Object; 

使用 typeof 可检测变量的数据类型 

例 : Alert( typeof(message) ) // "String"; 

typeof 为操作符不是函数,所以可以省略 () 

typepf null // Object;

4、Undefined : 定义但未赋初值。 

var message; 

alert(message); // undefined 

alert(age); // error

5、NUll类型: 一个空对象指针 

alert(null == undefiend) // true

6、Boolean类型. 

true不一定等于1,false也不一定等于0. 

大小写敏感。 

可对任何变量使用转型函数 Boolean。 

转换规则:


if语句自动转换: 

var message = "hello"; 

if(message) { //转为true 

alert ( "value id true"); 

}

7、Number 类型:

* 浮点数值varfloat Num3 =.1// 有效,但不推荐* e 表示指数幂3.125e7 ;// 等于 3125000 : 3.125 * 10的7次幂        最高精度是17位小数,计算精度不如整数。            例 :0.1+0.2≠0.3而是 等于0.3000000……4。if(a+b ==0.3) { }// 永远不要用float做测试*NaN: 即非数值,是一个特殊的数值

任何数除以非数值都返回NaN,因此不影响其他代码执行。

NaN 的两个特点 :

任何涉及到NaN的操作都返回NaN,(如 NaN / 10)

NaN与任何值都不相等,包括本身。alet(NaN == NaN) ; //falseisNaN() ; 判断是否“不是数值”。

数值转换 : Number(),parseInt(),parseFloat();

对于任何类型可用第一个,后两个用于字符串;

Number()转换字符串复杂且不合理,处理整数用parseInt();处理浮点数用parserFloat();

例 : parseInt(“1234blue”); // 12348、String 类型

* 字符字面量

/n : 换行 /t 制表 /r 回车

* 特点

不可变,只能销毁重建。

* 转为字符串

tostring() : null 和 undefined 没有此方法,要用String()方法;

简便转换方法 : 值与字符串相加 (“ ”)。

注意 : 0.9 - "0.4" = 0.5 // 隐式类型转换; 

1 + “2” = "12";

9、Object 类型 : 一组数据和功能的组合

Object 类型是所有它的实例的基础,所具有的任何属性和方法同样存在更具体的对象中。每个实例都具有以下属性和方法 :

*constructor() : 构造函数,保存着用于创造当前对象的函数;* hasOwnProperty( property ) : 检查给定属性在当前对象实例中(不是在原型中) 是否存在;* isPropertyOf(object) : 对象是否是当前对象原型;* toLocalString() : 返回对象的字符串表示,与地区对应;* toString() : 返回对象的字符串表示;* valueof() : 返回对象的字符串、数值、布尔值表示,通常与tostring()一样。

10、操作符 包括算数操作符(加号、减号等),位操作符,关系操作符和相等操作符。

* 一元操作符

++i : i = i + 1; // 先自加再赋值

* 一元加减

该操作符对非数值应用时,会像Number()转型函数一样对值进行转换。

对对象先调用valueof和tostring方法。

可用于基本算数运算,也可以用于转换数据类型。

* 位操作符

整数的补码为本身,负数的补码为取反加一;

按位 非 (NOT) : ~ 表示,反码;

按位 与 (AND) : & 表示,同为1得1,其他为0;

按位 或 (OR) : | 表示,同为0得0,其他为1;

按位 异或 (XOR) : ^ 表示,同为0,异为1;

左移 : << 以0补位,32位;

有符号右移 : >> 保留符号位 0 : 正 1 : 负;

无符号右移 >>> 负数以绝对值二进制补码表示;

* 布尔操作符 : 非(NOT)  与(AND)  或(OR)

逻辑非(!) : 

可用于任何值,无论类型都返回布尔值,先转为布尔值,再求反;

逻辑与(&) :

同真为真,其他为假;

短路操作:第一个能决定结果,后边就不用求值,如第一个为false,结果直接为false;

逻辑或(||) :同假为假,其他为真有一个操作符不是布尔值,结果不一定返回布尔值;

与逻辑与一样,短路运算;

可用短路逻辑为变量赋值避免赋null和undefined。如 : var result = (A || B) // 当A不为null,赋值A,否则为B;

* 乘性操作符

乘法 : (*)除法 : (/)求模 : (%) // 余数

* 加性操作符

5 + 5 = 10 5 + "5" = "55" "str" + 5 + 5 = "str55" "str" + (5 + 5) = "str10"

* 减性操作符 : 先进行隐式类型转换(Number()): 注意转换规则对number类型友好优先

5 - "2" = 3 5 - true = 4 5 - "" = 5 NaN - 1 = NaN

* 关系操作符 : ><  >=<=

比较字符串时比较的事字符编码值,例 : a 为 97 , B 为 66“B” < "a" // true "23" < 3 // true

* 相等操作符 : ==  !=  ===    !==

相等和不相等 ---- 先转换再比较全等和不全等 ---- 比较但不转换,比较数据类型

* 条件操作符(三目运算符)

A ? b : c // A为真时值为b,否则为c

* 赋值操作符 : =

= 右边的值赋给左边变量赋值复合操作符 : *= /= %= += -= <<= >>= >>>=

* 逗号操作符

一条语句执行多个操作 : var num1 = 1 , num2 = 2,num3= 3;用于赋值时,总是返回表达式最后一个值 : var num = (5,1,4,8,0) //返回011、语句

*if语句 : 先用Boolean转换

推荐使用代码块 : { }

*do-while语句 : 后测试循环语句,循环内代码至少执行一次

let i = 0;do {i +=2} while

*while语句 : 前测试循环语句,有可能不会被执行

var i = 0;while(i<10){i += 2;}

*for语句 :var定义的变量会污染全局,之后尽量使用let*varcount=10;

for(var i = 0;i < count;i++){alert(i);}alert(i); //10

*for-in语句 :

一种精准的迭代语句,可用来枚举对象属性,例 : for(property in expression) {} 返回的属性无序,因浏览器而异;

* label语句

可在代码中加标签,以便将来使用 ;

*break和continue:

break直接跳出循环,continue跳到下一次循环;

*with语句 :

将代码的作用域设置到一个特定对象中。语法 : with(expression){ } : 此语法会导致性能下降,不建议使用。

*switch语句 :

switch(expression){ case value : statement break; default : statement}12、函数function functionName(org1,org2...){statements}

* 调用 :functionName();

可加return设置返回值;执行return后停止并立即退出,位于return后的代码永远不会执行。

* 理解参数

不介意传递的参数的种类和个数,因内部用数组来表示,函数体内可以用arguments对象来访问参数数组。命名参数只是提供便利,不是必须的,可在内部判断参数的长度完成重载。所有传递都是值的传递,没有值的自动赋予undefined值。

* 没有重载

重载:函数名相同,参数的数量和类型不同。es中定义两个同名函数,后者会覆盖前者,通过检查传入参数的种类和数量可以模仿重载。

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

推荐阅读更多精彩内容