小红书阅读笔记~第三章

JavaScript基本概念有什么:语法、数据类型、流程控制语句、理解函数。

JavaScript语法

ECMAScript: 它的语法大量借鉴了C和Java等其他语言。
区分大小写:变量、函数名都是区分大小写的。
标识符:是指变量、函数、属性的名字,再或者是函数的参数。
格式规则: 第一个字符必须是字母、下划线'_'、或者一个美元符号($)。其他的字符可以是数      字、字母、下划线或者数字。
温馨小提示:不能把关键字、保留字、true、false、null用作标识符。
例如:myBody,firstNavECMAscript的默认内嵌函数也是使用这种格式

注释:上边说道JavaScript借鉴了C等其他C语言,在注释这块就是借鉴了C语言的注释。

有两种注释风格,单行注释,多行注释。

//  单行注释

/*                  /*
  多行注释            * 另一种写法的多行注释这样写纯粹是为了提高注释的可读性
                     *这种格式一般出现在企业级程序中非常常见
*/                  /*

在ECMAScript中引入了严格模式这样一种概念。严格模式是定义了与其他的模式不同的解析与执行模型。JavaScript在严格模式下执行结果会大有不同,支持严格模式的浏览器包括IE10+、Firefox 4+、Safari 5.1+和Chrome、Opera12+。

也是分为了两种模式:全局严格模式、指定函数严格模式。
全局在脚本顶部添加  *use strict*
指定函数在函数内顶部添加  *use strict*

ECMAScript语句中的一句要求一分号来结尾(;),代码块块以花括号来表示开始和结束( '{'   '}' )。
例如:
        sum = a + b     //不推荐
        del = a - b;   //推荐  
        if (item) 
           console.log('不推荐');
        if (item) {
           console.log('推荐');
        }

ECMA-262还描述了一组具有特定用途的关键字,关键字可以用在表示控制语句的开始或结束,或者用于执行特定操作等等。关键字是语言保留的,不能用作标识符。
关键字:break、do、instanceof、typeof、case、else、new、var、catch、finally、return、void、continue、for、switch、while、debugger*、function、this、with、default、if、throw、delete、in、try。
ECMA-还有另外一组不能用作标识符的,它们叫做保留字。尽管保留字在这门语言中还没有任何特定的用途,但可能在将来被用作关键字。
保留字:abstract、enum、int、short、boolean、export、interface、static、byte、extends、long、super、char、final、native、synchronized、class、float、package、throws、const、goto、private、transient、debugger、implements、protected、volatile、double、import、public。
第五版在非严格模式下降保留字缩减为:class、enum、extends、super、const、export、import.
严格模式下还对一些保留字加了限制:implements、package、public、interface、private、static、let、protected、yield。

ECMAScript的变量是松散类型的,可以用来保存任何类型的数据。定义变量时使用var操作符(var是一个关键字),后面跟变量名(标识符)。
例如: var message;

这行代码定义了一个 message 的变量,该变量可以用来保存任何值(定以后未赋值的值会默认为——undefined),ECMAScript也支持直接初始化变量,因此在定义的时候可以直接为她赋值。
例如:var message = “hi”;

此时message这个变量的值是一个字符串“hi”。我们也可以在修改值得时候改变他的类型。
例如:var message = ‘你好呀’;
         message = 666;  //有效,但不推荐

我们还可以使用var在函数里来定义一个变量,那么这个变量在函数退出后就会被销毁。
例如:function test(){
           var message = "hi"; //局部变量
      }
      test();
      alert(message);// 这里弹出错误

我们还可以省略var操作符来创建一个全局变量。
例如:function test(){
         message = "hi"; //全局变量
     }

我们还可以使用一个var来定义多个变量,只要把每个变量用都好分开即可。
例如:var message = "hi",
          found = false,
          age = 29;

在严格模式中,不能定义名为eval 和 arguments的变量,否则会导致语法错误。
数据类型
ECMAScript有5种简单数据类型:undefined、null、Boolean、number和string。
复杂数据类型——object,object本质上是由一组无序的名值对组成的。 

我们可以通过typeof来检测给定变量的数据类型。
可能会返回:
  "undefined"——如果这个值未定义;
  "Boolean"——如果这个值是布尔值;
  "string"——如果这个值是字符串;
  "number"——如果这个值是字符串;
  "object"——如果这个值是对象或null;
  "function"——如果这个值是函数。

undefined类型
  undefined类型只有一个值,即特殊的undefined。在使用var生命变量但未对其加以初始化时,这个值就是undefined。
例如:
  var message ;
  alert( message == undefined ); //true

null类型
  null类型也是只有一个值得数据类型。null值表示一个空对象指针,而这也是使用typeof操作符检测null值时会返回"object"的原因。
例如:
  var car = null;
  alert(typeof car);  //"object"
布尔操作符
布尔操作符一共有3个:或、与、非。
  1.逻辑非:!用感叹号来表示,可以用于ECMAScript中的任何值。逻辑非操作符首先会将它的操作数转换为一个布尔值,然后再求其反。而同时使用两个逻辑非操作符,实际上就会模拟Boolean()转型函数的行为。当然,最终结果与这个值的本身相等。
  2.逻辑与:&& 用两个和号来表示,有两个操作数。可以应用于任何类型的操作数,而不仅仅是布尔值。当有一个操作数不是布尔值的情况下,逻辑与操作就不一定返回布尔值。逻辑与操作属于短路操作,就是说如果第一个操作数能决定结果,那么就不会再对第二个操作数求值。
  3.逻辑或:||用两个竖线符号来表示,有两个操作数。与逻辑与操作相似,如果有一个操作数不是布尔值,逻辑或也不一定返回布尔值。逻辑或操作符也是短路操作符。意思是,如果说第一个操作数的求值结果为true,就不会对第二个操作数求值了。
乘性操作符
ECMAScript中定义了三个乘性操作符:*、/、%。这些操作符与Java、C、或者Oerl中的相应操作符用途类似,只不过在操作数为非数值的情况下会执行自动的类型转换。如果参与乘法计算的某个操作数不是Number类型,这时候会进行Number()隐式转换,将其转换为数值。空字符串会被当做0,true会当作1.
 1.乘法:* 乘法操作符由星号来表示,用于计算两个操作数的乘积。语法类似C等。如果只有一个操作数有符号,那么结果就是负数,整数默认隐藏且带+。如果乘积超过了ECMAScript数值的表示范围,则返回Infinity或-Infinity。如果有一个操作数是NaN那么结果也返回NaN。Infinity与0相乘结果是NaN,与非0相乘则结果还是Infinity或-Infinity,与它本身相乘还是它本身。
 2.除法:/除法操作符用斜线符号来表示,执行第二个操作数除第一个操作数的计算。与乘法一样,如果有一个操作数带符号,那么结果也是负数。
 3.求余:%余数操作符由一个百分号来表示。与乘法除法都类似。如果操作数都是数值,执行常规的除法,返回除得的余数。如果被除数是无穷大(有限大)值而除数是有限大(0)的数值,则结果是NaN。被除数是0结果也是0.
加性操作符
1.加法:+加法操作符是由+号来表示,两个操作数都是正常数值,就是正常加法处理。如果一个操作数是NaN(Infinity或-Infinity)那么结果也是NaN(Infinity或-Infinity)。如果两个操作数都是字符串,那么久会将二个操作数值拼接起来。如果一个的话,会把数值那个操作数也转换为字符串,再进行拼接。可以在字符串中用‘()’括起来要计算的数值,这样就告诉了解析器先计算其结果。
2.减法:-减法操作符用小横线来表示,用法类似于加法操作符。
关系操作符
小于(<)、大于(>)、小于等于(<=)和大于等于(>=)这几个关系操作符用于对两个值进行比较,比较的规则与我们在数学可上所学的一样。它们的结果都返回布尔值。
相等操作符
ESMAScript提供了两组操作符:
  1.相等和不相等(==、!=)———先转换再比较。等余操作符表示两个操作数相等,则返回true,否则返回false。而不等于操作符与等于操作符相反。它们都会进行强制转换,然后再比较它们的相等性。如果操作数是布尔值或者字符串的话,会将其先进行转换为数值。如果一个操作数是对象是会调用valueof()方法,用得到的基本类型值按照前面的规则进行比较。null和undefined是相等的。
  2.全等和不全等(===)———仅比较而不转换。为了保持代码中数据类型的完整性,我们推荐使用全等和不全等操作符。
条件操作符
它不光是一种很灵活的操作符,它的语法和Java的条件操作符相同的语法形式相同。
例如:var max = (num1 > num2)? num1 : num2
赋值操作符
简单的赋值操作符用等于号(=)来表示,其作用就是把右侧的值赋值给左侧的变量。
例如:var num = 10;
         num = num + 10;这一行我们可以用一个复合赋值来代替:
         num += 10;
复合操作符有:
    乘/赋值(*=)
    除/赋值(/=)
    取余/赋值(%=)
    加/赋值(+=)
    减/赋值(-=)
    左移/赋值 (<<=)
    有符号右移/赋值 (>>=)
逗号操作符
使用逗号操作符可以在一条语句中执行多个操作。
例如:var num1 = 1 , num2 = 2 , num3 = 3;

语句

ECMAScript规定了一组语句,也称为流控制语句。
if语句
大多数编程语言中最为常用的一个语句就是if语句。
例如:if(true){
       console.log(‘yes’)
     } else if(false){
       console.log(‘no’)
     };
do-while语句
像do-while这种后测试循环语句最长用于循环体中的代码至少要被执行一次的情形。
var i = 0;
do{
  i += 2;
}while(i < 10);
alert(i);
while语句
while语句属于前测试循环语句,会在循环体内的代码被执行之前,就会对出口条件求值。如果判断条件不成立的话,循环体内的代码有可能永远不会被执行。
var i = 2;
while(i < 1){
    i++;
}
for语句
var count = 10;
for(var i = 0; i < count; i++){
    alert(i);
}
简单来说while循环做不到的,使用for循环同样也做不到。for循环只是把与循环有关的代码集中在了一个位置。

3.6.5

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

推荐阅读更多精彩内容

  • TITLE: 编程语言乱炖 码农最大的烦恼——编程语言太多。不是我不学习,这世界变化快! 有时候还是蛮怀念十几、二...
    码园老农阅读 5,294评论 2 35
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,093评论 0 3
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,205评论 0 4
  • 有人说过,很多弯路到最后都成了直路,所有的坑到最后也都成了坦途;所谓的直路和坦途并不是摆在眼前的,都是不断的的...
    老衲法号一眉道人阅读 1,312评论 0 4
  • JS 简史 Web 的兴起已经把 JavaScript 带到一个前所未有的地步, 了解JS 的历史更好的使用JS ...
    迷缘火叶阅读 1,614评论 0 1