资讯专栏INFORMATION COLUMN

js入门笔记整理

BigNerdCoding / 2150人阅读

摘要:十进制最基本的字面量格式八进制第一位必须是。如八进制的十六进制前两位必须是。如十六进制八进制十进制由于函数在处理八进制时与存在分歧,会忽略数字前面的值。通常与方法的返回值相同下一篇入门笔记整理二操作符关注作者吧

下一篇:js入门笔记整理(二)——操作符

给入门的同学整理的笔记,不对的地方欢迎指出~

javascript的组成

首先需要明白的是,一个完整的javascript实现应该由下列三个不同的部分组成

核心(ECMAScript,ECMAScript是一种语言的标准)

文档对象模型(DOM)

浏览器对象模型 (BOM)

语法

区分大小写

标识符

注释

严格模式

语句

区分大小写
ECMAScript中的一切都区分大小写。如test和Test分别代表不同的变量

标识符
所谓标识符,就是指变量、函数、属性的名字,或者函数的参数。命名规则如下:

第一个字符必须是一个字母、下划线(_)或一个美元符号($)。注意数字不能当首字母

其它字符可以是字母、下划线、美元符($)或者数字。
按照惯例,ECMAScript使用驼峰大小写格式,也就是第一个字母小写,剩下每个单词的首字母大写。如:doSomething、myBook

注释

单行注释以两个斜杠开头

 //单行注释 

块级注释以一个斜杠和一个星号(/)开头,以一个星号和一个斜杠(/结尾)

/*
*这是一个多行
*块级注释
*/

严格模式
首先要理解,在严格模式下,ECMAScript3标准中的一些不确定行为将得到处理,而且对某些不安全的操作也会抛出错误。

要在整个脚本中使用严格模式,可以在顶部添加

"use strict"

这是一条编译指令,用于告诉支持的javascript引擎切换到严格模式

在指定函数内部使用严格模式

function fun () {
    "ustrict";
    //函数体

支持严格模式的浏览器包括:IE10+、Firfox 4+、 Safari5.1+、Opera和Chrome

语句
ECMAScript中的语句以一个分号(;)结尾;如果省略分号,则由解析器确定语句的结尾。

var count = a + b   //即使没有分号也是有效的。——不推荐
var count = a + b;  //有效的语句——推荐。因为加上分号可以避免很多错误,甚至提高性能

关键字和保留字
需要特别注意的就是关键字和保留字不能当作标识符使用,即变量、函数等的命名不能和关键字保留字一样。
如: var for;这是错误的,因为for是ECMAScript 5的关键字。

具体的关键字和保留字可以自行查阅相关书籍

变量

定义变量要使用var操作符(注意var是一个关键字),后跟一个变量名(即标识符)。如:

 var str;

ESCMScript也支持直接初始化,即定义变量的同时就直赋值如:

 var str = "hello word";

ECSMScript的变量是松散类型的,所谓松散类型就是可以保存任何值。因此,在修改变量的值的同时,也可以修改类型。如:

 var str = "hello word";
 str = 100;   //有效,但不推荐

这个列子中,str先是值为"hello word"的字符串,再是值为100的整型。

*还有一点值得注意的是,使用var定义的变量将成为其所在作用域内的局部变量。如:

function fun () {
    var str = 100; //局部作用域
}
fun();
console.log(str); //错误

*省略var会创建一个全局变量。如:

function fun () {
    str = 100;  //全局变量
}
fun();
console.log(str);  // 100

我们并不推荐省略var,因为这可能会导致不必要的混乱,使维护困难。在严格模式下,给未声明的变量赋值会抛出错误。

用一条语句定义变量,使用逗号隔开,ru:

var str = "hi",
    msg = false,
    val = 100;
数据类型

ESCMScript有6中数据类型:(首字母大写)

Undefined
Null
Number
Boolean
String
Object

typeof操作符(全部小写)

"undefined" —— 未定义
"boolean"  ——  布尔值
"string" —— 字符串
"number" —— 数值
"object" —— 对象或null
"function" —— 函数

注意:从技术角度讲函数确实不是一种数据类型,它属于object类型,但可以通过typeof区分函数和其它对象,

undefined类型
即:使用var定义但没有初始化(也就是没有赋值)的变量。

初学者要区分与未定义的变量的区别:

var str;
//下面变量未定义
//var msg;

consoel.log(str); //"undefined"
console.log(msg); //报错

//变量未定义只能执行typeof操作
typeof(str); // "undefined"
typeof(msg); // "undefined"

null类型
从逻辑角度来看,null表示一个空对象指针。

typeof(null); //"object"

其实,undefined的值是派生自null,因此,它们的相得性质总是返回 true。如:

console.log(undefined == null); //true

但是注意他们不恒等

console.log(undefined === null); //false

boolean类型
该类型只有两个值:true和false

各数据类型和boolean的转换:

这些转换规则对理解流控制控制语句(如if语句)自动执行Boolean转换非常重要。如:

var msg = "not null";
if (msg) {
    console.log("msg转换值是true");
}

Number类型

ESCMScript中使用Number类型表示整数和浮点数。

十进制:最基本的字面量格式
八进制:第一位必须是0。如:

070  //八进制的56

十六进制:前两位必须是0x。如:

oxA  //十六进制的10

NaN
NaN,是一个特殊的数值,表示一个本要返回数值的操作数未返回数值的情况(这样就不会抛出错误)。如:

function fn1 () {
    return 10; //有数值返回
}
var val1 = fn1();
console.log(val1); //10 


function fn2 () {
    return 10; //没有数值返回
}
var val2 = fn2();
console.log(val2); //NaN    

任何涉及到nan的操作都返回NaN。如:

Nan / 10 = NaN;

NaN与任何值都不相等,包括NaN本身。如:

console.log(NaN == NaN);  //false
console.log(NaN === NaN);  //false

在ESCMScript中,任何数值除以0,都返回NaN。

如: 300 / 0 = NaN;

数值转换

NUmber()函数:——可用于任何类型
(1)如果是Booleam值,true和false值分别被转换成1和0
(2)如果是数值,只是简单传入和返回
(3)如果是null,返回0
(4)如果是undefined,返回NaN
(5)如果是字符串
a.空字符串返回0
b.如果只包含数字(包括正负号),转换为十进制数值。如:

 "123"转换为123
 "012"转换为12(前导的0忽略)

c.如果包含有效的浮点格式,转换为相应的浮点数值(同样忽略前导的0)
d.如果包含有效的十六进制,如"0xA",转换为相应的十进制
e.否则转换为NaN
(6)如果是对象,则调用对象的valueof方法,按上述规则转换。如果返回的值为NaN,在调用对象的tostring方法,按照上述规则转换

由于Numbera()函数在转换字符串时比较复杂切不够合理,因此在处理整数的时候更常用的是parseInt()函数。

parseInt()函数—— 将数值转换为整数

(1)如果第一个字符(空格除外)不是数字或负号,返回NaN
(2)如果第一个字符(空格除外)是数字或负号,函数将解析第二个字符,直至解析完后续字符或者遇到了一个非数字字符。如:

var num1 = parseInt("123ad");  //123
var num2 = parseInt(""); //NaN
var num3 = parseInt("0xA"); //10(十六进制)
var num4 =  parseInt(13.3);  //13
var num5 = parseInt("070");  //56(八进制)
var num6 = parseInt("20"); //20(十进制)

由于parseInt()函数在处理八进制时ESCMScript3与ESCMScript5存在分歧,ESCMScript5会忽略数字前面的值。所以为了避免不必要的错误,建议总是为函数提供第二个基数(即指定多少进制)。如:

parseInt("020", 10);   //十进制
parseInt("010", 8);   //八进制
parseInt("7", 10);    //十进制
parseInt("7", 2);     //二进制

parseFloat()函数——将数值转换为浮点数值
(1)之解析十进制
(2)始终忽略前面的0
(3)只有第一个小数点有效

var num1 = parseFloat("123ad");  //123
var num2 = parseFloat(""); //NaN
var num3 = parseFloat("0xA"); //0
var num4 = parseFloat(13.3);  //13.3
var num5 = parseInt("070");  //70
var num6 = parseInt("20.23e3"); //20.23000

String类型
字符串可以使用双引号("")或单引号("")表示

类型转换

toString()方法

(1)数值、布尔值、对象和字符串值都有toString()方法
(2)null、undefined没有toString()方法
(3)方法的第二个参数可以传入基数

var num = 10;
num.toString(num); //"10"
num.toString(num, 2); //"1010"
num.toString(num, 8); //"12"
num.toString(num, 10); //"10"
num.toString(num, 16); //"a"

String()函数

(1) 如果值有toString()方法则调用toString()方法
(2) 如果值是null,则返回"null"
(3) 如果值是undefined,则返回"undefined"

Object类型
Object类型有下列属性和方法:

constructor:对象的构造函数

hansOwnProperty(propertyName):检查给定属性在当前对象(不是实例原型)中是否存在

isPropertypeOf(object):检查传入的对象是否是对象的原型

propertyIsEnumerable(propertyName):检查给定属性是否能用for-in枚举

toLocaleSting():返回对象的字符串

toSting():转换成字符串

返回对象的字符串、数值、布尔值。通常与toString()方法的返回值相同

下一篇:js入门笔记整理(二)——操作符

关注作者吧~

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/84565.html

相关文章

  • js入门笔记整理(二)——操作符

    摘要:上一篇入门笔记整理一元操作符递增递增分为前置递增和后置递增前置型两个加号放在前面这个操作其实就是给加,上面的列子等效于前置递增其实可以分为两步操作,其加运算高于赋值号运算,如等效于先运行加运算为再运行赋值运算后置型两个加号放在后面这个操作其 上一篇:js入门笔记整理 一元操作符 递增 递增分为前置递增和后置递增前置型——两个加号(++)放在前面 var num = 1; ++n...

    JasonZhang 评论0 收藏0
  • React 入门学习笔记整理目录

    摘要:入门学习笔记整理一搭建环境入门学习笔记整理二简介与语法入门学习笔记整理三组件入门学习笔记整理四事件入门学习笔记整理五入门学习笔记整理六组件通信入门学习笔记整理七生命周期入门学习笔记整理八入门学习笔记整理九路由React 入门学习笔记整理(一)——搭建环境 React 入门学习笔记整理(二)—— JSX简介与语法 React 入门学习笔记整理(三)—— 组件 React 入门学习笔记整理(...

    daryl 评论0 收藏0
  • 首次公开,整理12年积累的博客收藏夹,零距离展示《收藏夹吃灰》系列博客

    摘要:时间永远都过得那么快,一晃从年注册,到现在已经过去了年那些被我藏在收藏夹吃灰的文章,已经太多了,是时候把他们整理一下了。那是因为收藏夹太乱,橡皮擦给设置私密了,不收拾不好看呀。 ...

    Harriet666 评论0 收藏0
  • AI开发书籍分享

    摘要:编程书籍的整理和收集最近一直在学习深度学习和机器学习的东西,发现深入地去学习就需要不断的去提高自己算法和高数的能力然后也找了很多的书和文章,随着不断的学习,也整理了下自己的学习笔记准备分享出来给大家后续的文章和总结会继续分享,先分享一部分的 编程书籍的整理和收集 最近一直在学习deep learning深度学习和机器学习的东西,发现深入地去学习就需要不断的去提高自己算法和高数的能力然后...

    huayeluoliuhen 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<